教你如何用Node实现API的转发(某音乐)


Posted in Javascript onSeptember 20, 2019

前言

你有没有过这样的经历:每当想写个项目来学习新技术的时候,却发现因为没有一套成熟的免费接口,而导致想法被扼杀摇篮。前段时间,笔者准备学一下hooks的姿势;苦于没有比较好的数据源。然后就找到了这个倒霉的咪咕音乐,并成功实现了接口转发。

本文主要用到了 Node、Express

Node、Express

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架

快速上手

文档目录
├── dist
├── node_modules
├── public
│  └── index.html
├── src
│  └── apiList
│    ├── index.js
│    └── client_play_list_tag.js
│    └── ...
│  └── utils
│    └── request.js
│    └── userAgent.js
│  ├── index.js
├── package.json

package.json

{
 "name": "testnodeapi",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "dev": "node src/index.js"
 },
 "author": "alkun",
 "license": "ISC",
 "dependencies": {
  "axios": "^0.19.0",
  "express": "^4.17.1"
 }
}

第一步:配置入口文件index.ts

首先需要在导入下载好的安装包,并尝试开启一个服务const express = require('express')

const app = express()
const port = 5555
app.use((req, res) => {
  res.send('hahhaha')
})
app.listen(port, ()=>{
  console.log(`Example app listening on http://127.0.0.1:${port}`)
})

第二步:安装axios,并实现一个简易的转发

...
  const axios = require('axios')
  
  app.use(async (req, res) => {
    let resp = await axios({
      baseURL: 'http://m.music.migu.cn/migu/remoting/',
      method: 'get',
      url: '/cms_list_tag',
    })
    res.send(resp.data)
  })
  
  app.listen(8888, () => {
    console.log(`Example app listening on http://127.0.0.1:8888`)
  })

第三步:我们需要把axiox进行一些封装

待更新内容

  • 请求函数的封装
  • userAgent的封装
  • apiList: 不同api的封装

注:

本文涉及的代码还是非常简单的,更多的高大上功能还需要自己去折腾吧。

这里有完整版代码,TS + Node + Express 欢迎 STAR STAR STAR 传送门>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
Aug 12 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
javascript模拟订火车票和退票示例
Apr 24 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
Vue.js实现微信过渡动画左右切换效果
Jun 13 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
jquery添加div实现消息聊天框
Feb 08 jQuery
js实现简单放大镜效果
Mar 07 Javascript
使用layui实现树形结构的方法
Sep 20 #Javascript
生成无限制的微信小程序码的示例代码
Sep 20 #Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 #Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 #Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 #Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 #Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
Sep 20 #Javascript
You might like
根德YB400的电路分析
2021/03/02 无线电
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
JavaScript 事件系统
2010/07/22 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
vue filters的使用详解
2018/06/11 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python实现淘宝购物系统
2019/10/25 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
python else语句在循环中的运用详解
2020/07/06 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
员工培训心得体会
2013/12/30 职场文书
爱护花草树木的标语
2014/06/11 职场文书
大学感恩节活动总结
2015/05/05 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
JavaScript原型链详解
2021/11/07 Javascript
MySQL优化之慢日志查询
2022/06/10 MySQL