教你如何用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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
jQuery中replaceWith()方法用法实例
Dec 25 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
JavaScript禁止微信浏览器下拉回弹效果
May 16 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
js实现带积分弹球小游戏
Jul 21 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
使用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
第七节--类的静态成员
2006/11/16 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
chrome调试javascript详解
2015/10/21 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
vue router的基本使用和配置教程
2018/11/05 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python实现excel转sqlite的方法
2017/07/17 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
python对象与json相互转换的方法
2019/05/07 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
实习期自我鉴定
2013/10/11 职场文书
电工工作职责范本
2014/02/22 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
婚礼司仪主持词
2014/03/14 职场文书
先进教师个人总结
2015/02/11 职场文书
2015年度保密工作总结
2015/04/24 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript