nodeJs 使用 express-http-proxy 转发请求

开发过程中经常需要用到 nodeJs做转发层

使用express配合 express-http-proxy 可以轻松的完成转发

使用过程:

安装 express-http-proxy

npm install express --save
npm install express-http-proxy --save

创建proxy实例

var proxy = require('express-http-proxy');

将客户端请求转达到 http://localhost:3001 上:

app.use('/api', proxy('http://localhost:3001', {
    //过滤器(可选)
    filter: function(req, res) {
        return req.method == 'GET';
    }
    //请求路径解析(可选)
    proxyReqPathResolver: function(req) {

        console.log(`请求的路径:${req.url}`);     //请求的路径:/article/list

        return `${req.url}?token=123456`        //转发请求路径: /article/list?token=123456
    },
    //返回数据处理,如果过程有异步操作应返回Promise(可选)
    userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
        //同步
        data = JSON.parse(proxyResData.toString('utf8'));
        data.newProperty = 'exciting data';
        return JSON.stringify(data);
        //异步
        return new Promise(function(resolve) {
            proxyResData.funkyMessage = 'oi io oo ii';
            setTimeout(function() {
                resolve(proxyResData);
            }, 200);
        });
    },
}))

如果有多台服务器,可以利用 express-http-proxy 做负载均衡

app.use('/api', proxy(selectProxyHost))
//随机选择转发服务器
function selectProxyHost(){
    return (new Date() % 2) ? 'http://google.com' : 'http://altavista.com';
}

 

转载于:https://www.cnblogs.com/xiaoliwang/p/10195923.html

好的,关于使用Node.js做中间层,进行协议转发,我可以给您提供一些具体的实现方案。 1. 使用http模块实现协议转发 您可以使用Node.js内置的http模块来实现协议转发。具体步骤如下: - 创建一个http服务器,并监听指定的端口。 - 在服务器的request事件中,获取客户端发送的请求信息,并将请求信息转发到目标服务器。 - 在接收到目标服务器的响应后,将响应信息返回给客户端。 以下是一个简单的代码示例: ```javascript const http = require('http'); const proxyTarget = { host: '目标服务器地址', port: '目标服务器端口号' }; http.createServer((req, res) => { const proxyReq = http.request(proxyTarget, proxyRes => { res.writeHead(proxyRes.statusCode, proxyRes.headers); proxyRes.pipe(res); }); req.pipe(proxyReq); }).listen(3000); ``` 2. 使用http-proxy-middleware模块实现协议转发 http-proxy-middleware是一个流行的npm包,可以帮助我们更方便地实现协议转发。具体步骤如下: - 安装http-proxy-middleware模块。 - 创建一个Express应用程序,并使用http-proxy-middleware中间件来代理请求。 - 配置代理请求的目标服务器。 以下是一个简单的代码示例: ```javascript const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); app.use('/', createProxyMiddleware({ target: '目标服务器地址', changeOrigin: true })); app.listen(3000); ``` 以上是两种使用Node.js实现协议转发的方式,您可以根据自己的需求选择适合的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值