这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
NodeJS 后端开发11 对方服务下线我推荐ProxyServer继续开发!
本篇是 雷学委的NodeJS系列 的第11篇。
专栏说明:《雷学委之NodeJS爱好系列》为兴趣爱好的系列而写
15年听好多NodeJS技术分享,一时间上了头,用来快速开发
这两年才想更多的对外分享,也当做兴趣小文
郑重声明,雷学委任何文章禁止转载!
背景
搞开发的小白最近经常会碰到一个问题,对方的接口还没有准备好,或者对方的系统出bug导致一些接口没法用。
小白跟项目老大说了这个情况。
但是老总不管,说这不还有接口文档嘛,这个问题很简单,你搞不定嘛?搞不定明天不要来了!
小白硬着头皮过来请教学委,我说这还不简单。把对方接口或者整站Mock一下就搞定,这样就能联动调试
直接解决
这里使用 http-proxy-middleware, nodejs比较热门的http 代理中间件。
假设,我们要基于源数据网站: http://theRealSite:10010/ 它有下面三个接口,两个接口坏了。
- /realData 接口返回原数据,这个接口很复杂无法mock,但目前可用
- /orders 订单数据接口,因为故障无法调用
- /products 产品数据接口,因为故障无法调用
回到主题,ProxyServer,也就这下面使用这个中间件启的一个代理服务器。
我们需要代理原数据,然后mock另外两个不可用的接口。
读者将下面代码保存为mockServer.js
const express = require('express');
const cors = require('cors');
const { createProxyMiddleware } = require('http-proxy-middleware');
//雷学委-CSDN-代码Demo
const leiXueWeiApp = express();
leiXueWeiApp.use(cors());
//创建代理,把流量转发给源网站
leiXueWeiApp.use('/realData', createProxyMiddleware({target: 'http://theRealSite:10010/', changeOrigin: true}));
//01 需要mock的商品接口。
leiXueWeiApp.use('/products',function(req,res){
console.log('雷学委:这里调用了我们代理接口:',req.originalUrl)
res.status(200).send([{
"name":"鸿星尔克",
"desc":"非常好的鞋子,价格实惠"
}]); // 这里随便整点啥都行
})
//省略一万行代码实现多个接口代理。
// 需要mock的第N个接口
leiXueWeiApp.use('/orders',function(req,res){
console.log('雷学委:这里调用了我们代理接口:',req.originalUrl)
res.status(200).send({"total":2,"bucket":["鸿星尔克“,"汇源果汁“]}); // 这里随便整点啥都行
})
leiXueWeiApp.listen(10010);
效果如下:
正常获取数据的接口
这个接口代理了源数据网站,把原始服务的数据原样返回: http://theRealSite:10010/
下面两个接口就是通过我们进行mock的接口。
展示/products 接口
展示/orders 接口
通过代理接口,把业务需要的数据继续从源头返回,其他接口本地生成,继续本项目开发,完全没有问题。
好了,小白,你回去看看有哪些接口,照着mock就行了。
学委之前写过一篇mock接口的各种模拟代理的方式,学会了可以去看这个 依赖服务故障怎么办?几百万的项目明天要路演Demo了
对了,学委还有这个可以关注长期阅读 =>雷学委趣味编程故事汇编\
持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
创作不易,请多多支持,点赞收藏支持学委吧!
更多代码可以查看/Star: LearnNodeJS代码下载