教你如何用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中的Math.E属性使用详解
Jun 12 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
vue深入解析之render function code详解
Jul 18 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
JavaScript数组reduce()方法的语法与实例解析
Jul 07 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单例模式详细介绍
2015/07/01 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
js读写json文件实例代码
2014/10/21 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python简单进程锁代码实例
2015/04/27 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python sublime安装及配置过程详解
2020/06/29 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
事务机电主管工作职责
2014/02/25 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
小学推普周活动总结
2015/05/07 职场文书