教你如何用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 相关文章推荐
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
js获取UserControl内容为拼html时提供方便
Nov 02 Javascript
jQuery动态添加
Apr 07 Javascript
简介BootStrap model弹出框的使用
Apr 27 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
Nov 25 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
Vue实现日历小插件
Jun 26 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
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
详解python之配置日志的几种方式
2017/05/22 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
Python使用xpath实现图片爬取
2020/09/16 Python
python 6行代码制作月历生成器
2020/09/18 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
linux面试题参考答案(2)
2015/12/06 面试题
平面设计师工作职责范文
2013/12/03 职场文书
成考报名单位证明范本
2014/01/16 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
读群众路线心得体会
2014/03/07 职场文书
学校安全责任书范本
2014/07/23 职场文书
课外科技活动总结
2014/08/27 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
angular4实现带搜索的下拉框
2022/03/25 Javascript
在python中读取和写入CSV文件详情
2022/06/28 Python