有些时候老是依赖后端才能部署灰度才能调试,现在可以直接撸上袖子直接干,只拦截特定path,来下发自定义的数据;其他的做转发处理;这样可以提升客户端的开发效率。
1. 安装:node.js和npm
https://nodejs.org/en/download/
2. 安装 request
npm init --yes
C:\Users\Administrator>npm install request --save
3. 把下面代码保存到后缀名为js的文件中
4. 启动server服务:node js保存的文件的全路径
5.客户端访问的域名改为使用本机ip+端口(如:3001),原来的域名放到js脚本的hostName 中;域名后的路径保持不变。
/**
* 把url访问的域名改为本机ip+端口号(3001)后面路径保持不变
*hostName 原来的域名
*xmlHeadData 下发xml的头部
*sendClientData 定制下发的数据
*customUrlPath 拦截的url的指定path
**/
var http = require('http');
var request = require('request');
var hostName = '你原来真实要访问的域名';
var xmlHeadData = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';
var sendClientData = '下发自定义的xml内容';
var customUrlPath = ‘testpath’;
var app = http.createServer(function (req, res) {
console.log('new request comming method: '+req.method+' req.url: '+req.url);
//拦截指定url的path
if(preDoneUrl(req, res,req.url)){
return;
}
//转发处理
if (/GET/i.test(req.method)) {
req.pipe(request.get(hostName + req.url)).pipe(res);
} else if (/POST|PUT/i.test(req.method)){
req.pipe(request.post(hostName + req.url, {form:req.body})).pipe(res);
}
});
//拦截url,并下发指定数据处理
function preDoneUrl(req, res,url) {
if(url.indexOf(customUrlPath) >= 0){
console.log(' hold on Url:'+url);
res.writeHead(200, {'Content-Type': 'application/xml; charset=utf-8'});
res.end(xmlHeadData + "\n"+ sendClientData );
return true;
}
return false
}
// 访问127.0.0.1:3001查看效果
app.listen(3001);
console.log('server started on 127.0.0.1:3001');