教你如何用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 相关文章推荐
avascript中的自执行匿名函数应用示例
Sep 15 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
JQuery中Ajax的操作完整例子
Mar 07 Javascript
Vuex简单入门
Apr 19 Javascript
JavaScript的继承实现小结
May 07 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
vxe-table vue table 表格组件功能
May 26 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
JS如何判断对象是否包含某个属性
Aug 29 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 获取远程网页内容的函数
2009/09/08 PHP
8个PHP数组面试题
2015/06/23 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
vue实现评论列表功能
2019/10/25 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
python实现飞机大战项目
2020/03/11 Python
Python Json数据文件操作原理解析
2020/05/09 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
施工质量承诺书范文
2014/05/30 职场文书
国际会计专业求职信
2014/08/04 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle