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

时间: 2024-10-14 08:35:55

nodeJs 使用 express-http-proxy 转发请求的相关文章

NodeJS with Express 4.x

Express 4.x 静态资源目录设置: //静态文件目录 app.use('/public', express.static(__dirname+'/public')); app.use('/data', express.static(__dirname+'/data')); //可以让 http://www.domain.com/image/aaa.jpg访问到服务器public目录下的aaa.jpg var express = require("express"), app =

NodeJS框架express的途径映射(路由)功能及控制

NodeJS框架express的路径映射(路由)功能及控制 我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route control章节,route实现了客户端请求的URL的路径映射功能,暂且译为路由或URL映射吧.如果你还是不太理解,相信看完本篇文章将会有些收获的. 路由(URL映射) Express利用HTTP动作提供了有意义并富有表现力的URL映射API,例如我们可能想让用户帐号的URL看起来像"/user/12

nodejs笔记--express篇(五)

创建一个express + ejs的项目 express -e testEjsWebApp cd testEjsWebApp npm install http://localhost:3000 Usage: express [options] [dir] Options: -h, --help output usage information -V, --version output the version number -e, --ejs add ejs engine support (def

关于nodejs能同时接受多少个请求的问题?////zzz

关于nodejs能同时接受多少个请求的问题? 最近学习node,看了很多教程,都在赞扬nodejs的异步I/O,异步I/O的特点就是,每接收一个请求,使用异步调用处理请求,不用等待结果,可以继续运行其他操作,也就是说可以继续接受请求.那它到底能接受?于是,我写了个程序来测试,代码如下: // server.js // 处理一个请求需要5秒,通过setTimeout设置5秒后响应 var http = require("http"); var n = 0; http.createServ

Java Servlet(九):转发请求与重定向请求区别

转发: <% pageContext.setAttribute("pageContextAttr", "pageContextAttribute"); request.setAttribute("requestAttr", "requestAttribute"); session.setAttribute("sessionAttr", "sessionAttribute"); ap

知名nodeJS框架Express作者宣布弃nodeJS投Go

知名 nodeJS 框架 Express 的作者 TJ Holowaychuk 在 Twitter 发推并链接了自己的一篇文章,宣布弃 nodeJS 投 Go. 他给出的理由是:Go 语言和 Rust.Julia 等都是众多的下一代语言之一,虽然不能说它是最好的语言,但已足够成熟和稳健,用 Go 语言开发的系统性能更好,更容易维护,错误处理等方面也更出色. 相关网址: Go: http://www.csdn.net/article/2014-03-25/2818958-google-go-pro

基于网络聊天室的社交游戏 -- nodejs、express、socket.io-server

系列博文的传送门:http://www.cnblogs.com/lastpairs/p/6993237.html 客户端代码github地址 https://github.com/xxyjskx1987/lastpairswebapp 服务器端代码github地址 https://github.com/xxyjskx1987/lastpairsnodeserver 项目演示地址 http://www.tanmiba.com/ 后端采用express进行搭建,express的使用方式如下 var

CentOS安装NodeJS及Express开发框架

本文演示在Linux上安装NodeJS及Express开发框架 注:本人在http://www.nodejs.org/官网上下载了nodejs最新版本NodeJS v0.10.29 但是在./configure的时候,说没有找到路径,无奈之下,只好将nodejs版本降低到v0.10.24. 现在讲运行步骤记下,以免将来忘掉, 安装过程如下: Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安装. [[email protected] local]# yum -

NodeJS旅程 : express - nodejs MVC 中的王牌

express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs express" 会跑出一大堆关于怎么用开发 express 来开发mvc文章 ,相同的内容在这里我不想重复叙述,关于express的入手文章大家到百度上搜就好了.这只是一篇随笔不是教程, 我是想用ASP.NET MVC与 express 来在他们擅长的方面上做一些比较,从中看看我们作为开发人员能得到什么,哪一