教你如何用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 相关文章推荐
Js获取下拉框选定项的值和文本的实现代码
Feb 26 Javascript
jQuery中slice()方法用法实例
Jan 07 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
vue.js指令和组件详细介绍及实例
Apr 06 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
Oct 17 Javascript
React组件中的this的具体使用
Feb 28 Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 Javascript
JavaScript实现简单动态表格
Dec 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
Terran兵种对照表
2020/03/14 星际争霸
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
浅析vue数据绑定
2017/01/17 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
python实现简单日期工具类
2019/04/24 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Python configparser模块应用过程解析
2020/08/14 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
广州品高软件.net笔面试题目
2012/04/18 面试题
饲料采购员岗位职责
2013/12/19 职场文书
中学生家长评语大全
2014/04/16 职场文书
禁毒宣传标语
2014/06/19 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
入伍通知书
2015/04/23 职场文书