使用express来代理服务的方法


Posted in Javascript onJune 21, 2019

nodejs和nginx都可以反向代理,解决跨域问题。

本地服务

const express = require('express')
const app = express()

//如果它在最前面,后面的/开头的都会被拦截
app.get('/', (req, res) => res.send('Hello World!'))

app.use(express.static('public'));//静态资源
app.use('/dist', express.static(path.join(__dirname, 'public')));//静态资源

//404
app.use('/test', function (req, res, next) {
  res.status(404).send("Sorry can't find that!");
});

app.use(function (req, res, next) {
  //TODO 中间件,每个请求都会经过
  next();
});

app.use(function (err, req, res, next) {
  //TODO 失败中间件,请求错误后都会经过
  console.error(err.stack);
  res.status(500).send('Something broke!');
  next();
});

app.listen(4000, () => console.log('Example app listening on port 4000!'))

与request配合使用

这样就将其它服务器的请求代理过来了

const request = require('request');
app.use('/base/', function (req, res) {
  let url = 'http://localhost:3000/base' + req.url;
  req.pipe(request(url)).pipe(res);
});

使用http-proxy-middleware

const http_proxy = require('http-proxy-middleware');
const proxy = {
 '/tarsier-dcv/': {
  target: 'http://192.168.1.190:1661'
 },
 '/base/': {
  target: 'http://localhost:8088',
  pathRewrite: {'^/base': '/debug/base'}
 }
};

for (let key in proxy) {
 app.use(key, http_proxy(proxy[key]));
}

监听本地文件变化

使用nodemon插件。

--watch test指监听根目录下test文件夹的所有文件,有变化就会重启服务。

"scripts": {
 "server": "nodemon --watch build --watch test src/server.js"
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 表单进行客户端验证demo
Aug 24 Javascript
JavaScript EasyPager 分页函数
May 25 Javascript
jquery插件validate验证的小例子
May 08 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
Jul 04 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
Javascript 关于基本类型和引用类型的个人理解
Nov 01 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
关于element的表单组件整理笔记
Feb 05 Javascript
react+redux仿微信聊天界面
Jun 21 #Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 #jQuery
jQuery事件委托代码实践详解
Jun 21 #jQuery
Vue.js中的extend绑定节点并显示的方法
Jun 20 #Javascript
微信小程序动态显示项目倒计时
Jun 20 #Javascript
微信小程序实现日期格式化和倒计时
Nov 01 #Javascript
微信小程序实现商城倒计时
Nov 01 #Javascript
You might like
Yii2如何批量添加数据
2016/05/17 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
javascript 节点遍历函数
2010/03/28 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
node.js中的require使用详解
2014/12/15 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
Node.js学习入门
2017/01/03 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python开发的实用计算器完整实例
2017/05/10 Python
对python中return和print的一些理解
2017/08/18 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
pandas数值计算与排序方法
2018/04/12 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
python与js主要区别点总结
2020/09/13 Python
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
业务主管岗位职责
2013/11/20 职场文书
标准自荐信范文
2014/01/29 职场文书
离婚协议书的范本
2015/01/27 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python