教你如何用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 相关文章推荐
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
May 10 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
值得分享和收藏的xmlplus组件学习教程
May 05 Javascript
js和jquery中获取非行间样式
May 05 jQuery
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
记录vue做微信自定义分享的一些问题
Sep 12 Javascript
小程序新版订阅消息模板消息
Dec 31 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
详解js异步文件加载器
2016/01/24 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
理解AngularJs指令
2015/12/10 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
Python全局变量操作详解
2015/04/14 Python
Python中字符串对齐方法介绍
2015/05/21 Python
Python实现文件复制删除
2016/04/19 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
深入浅析python with语句简介
2018/04/11 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
请解释接口的显式实现有什么意义
2012/05/26 面试题
银行柜员应聘推荐信范文
2013/11/24 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
运动会1000米加油稿
2015/07/21 职场文书
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记