开发过程中经常需要用到 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';
}

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

  1. Apache 代理(Proxy) 转发请求

    代理分为:正向代理(Foward Proxy)和反向代理(Reverse Proxy) 1.正向代理(Foward Proxy) 正向代理(Foward Proxy)用于代理内部网络对Internet ...

  2. nodejs库express是如何接收inbound json请求的

    这样几行简单的代码创建一个web服务器: var express = require('express'); var app = express(); var server = require('ht ...

  3. nodejs做中间层,转发请求

    简述node中间层的优势 node中间层,可以解决前端的跨域问题,因为服务器端的请求是不涉及跨域的,跨域是浏览器的同源策略导致的,关于跨域可以查看跨域复习使用node坐中间层,方便前后端分离,后端只需 ...

  4. [转] NodeJS框架express的途径映射(路由)功能及控制

    NodeJS框架express的路径映射(路由)功能及控制 我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route co ...

  5. nodejs笔记--express篇(五)

    创建一个express + ejs的项目 express -e testEjsWebApp cd testEjsWebApp npm install http://localhost:3000 Usa ...

  6. node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记

    用户无法直接访问后台接口 需要node端转发请求 并将数据以.csv文件格式生成以供客户端下载. 很不幸出现了中文乱码的问题 挖了各种坟帖,下了各种依赖包,csv.json2csv.bufferHel ...

  7. 使用nodejs和express搭建http web服务

    目录 简介 使用nodejs搭建HTTP web服务 请求nodejs服务 第三方lib请求post 获取http请求的正文 Express和使用express搭建http web服务 express ...

  8. 使用proxy解决请求跨域问题

    背景 在 react 项目里,前端请求接口时出现了跨域问题(类似图片中的提示) 这时最快捷的方法就是让后端同学设置请求允许跨域(如图配置响应头) 如果后端同学不配合,就需要靠我们自己来了! 实现 Re ...

  9. 如何给selenium.chrome写扩展拦截或转发请求

    Selenium.WebDriver Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口 ...

随机推荐

  1. 《python for data analysis》第五章,pandas的基本使用

    <利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...

  2. .Net牛刀小试-1缓冲使用

    根据文件名缓冲文件: /// <summary> /// 根据文件名缓冲指定目录文件 /// </summary> public class FileCacheAdapter ...

  3. 使用samba共享文件夹,提供给window访问

    1. 下载yumdownloader yum install -y yum-utils 2. 下载samba mkdir samba cd samba yumdownloader --resolve ...

  4. LOJ 2547 「JSOI2018」防御网络——思路+环DP

    题目:https://loj.ac/problem/2547 一条树边 cr->v 会被计算 ( n-siz[v] ) * siz[v] 次.一条环边会被计算几次呢?于是去写了斯坦纳树. #in ...

  5. httpd基于域名虚拟主机配置

    什么是虚拟主机 在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录. httpd支持多种方式的虚拟主机的配置,主要有以下种: 基于IP ...

  6. C 标准库头文件

    头文件 说明 头文件 说明 <assert.h> 条件编译宏,将参数与零比较 <complex.h> (C99 起) 复数运算 <ctype.h> 用来确定包含于字 ...

  7. 【java】异常

    异常体系:Throwable ---Error 通常出现重大问题:如类不存在或者内存溢出.停止运行,不对代码进行处理 ---Exception 在运行时出现的情况,可以进行针对性处理.可以通过try ...

  8. 配置Tomcat使用https协议(配置SSL协议)

    配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...

  9. java Servlet生成随机验证码

    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; i ...

  10. ios同步线程(dispatch_sync)保证代码在主线程中执行

    - (BOOL)transitionToNextPhase { // 保证代码在主线程 if (![[NSThread currentThread] isMainThread]) { dispatch ...