node.js代理转发get和post,拦截指定api下发的自定义数据

   有些时候老是依赖后端才能部署灰度才能调试,现在可以直接撸上袖子直接干,只拦截特定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');




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值