教你如何用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解析与序列化json数据(二)序列化探讨
Feb 01 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
分享JS数组求和与求最大值的方法
Aug 11 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
关于vue-router路径计算问题
May 10 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
Nautil 中使用双向数据绑定的实现
Oct 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中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
ECMAScript 基础知识
2007/06/29 Javascript
简单的js分页脚本
2009/05/21 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
用pycharm开发django项目示例代码
2018/10/24 Python
基于python实现高速视频传输程序
2019/05/05 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python csv模块使用方法代码实例
2019/08/29 Python
简单的Python调度器Schedule详解
2019/08/30 Python
numpy.array 操作使用简单总结
2019/11/08 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
python 一维二维插值实例
2020/04/22 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
应聘编辑职位自荐信范文
2014/01/05 职场文书
勤俭节约倡议书
2014/04/14 职场文书
感谢信模板大全
2015/01/23 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers