教你如何用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 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
Oct 14 Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 Javascript
js实现div在页面拖动效果
May 04 Javascript
JS实现刷新父页面不弹出提示框的方法
Jun 22 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
Vue微信公众号网页分享的示例代码
May 28 Javascript
解决vue项目运行npm run serve报错的问题
Oct 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.MVC的模板标签系统(三)
2006/09/05 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
php之XML转数组函数的详解
2013/06/07 PHP
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python最小二乘法矩阵
2019/01/02 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
python中@contextmanager实例用法
2021/02/07 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
管理科学大学生求职信
2013/11/13 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
节能环保口号
2014/06/12 职场文书
迁徙的鸟观后感
2015/06/09 职场文书