教你如何用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 相关文章推荐
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
bootstrap-table组合表头的实现方法
Sep 07 Javascript
Vue 滚动行为的具体使用方法
Sep 13 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 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 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
List Installed Software Features
2007/06/11 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
python使用cPickle模块序列化实例
2014/09/25 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
精彩的大学生自我评价
2013/11/17 职场文书
2014年创卫实施方案
2014/02/18 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
给领导敬酒词
2015/08/12 职场文书
Golang连接并操作MySQL
2022/04/14 MySQL