- express配置反向代理
- 什么是反向代理,简单说就是页面请求某接口,将该请求转发到另一个地址去处理。
- 这里我们使用
http-proxy
模块做代理(还有http-proxy-middleware
模块)。有两种配置方式具体如下:
const express = require('express'); const httpProxy = require('http-proxy'); var app = express(); //创建代理对象 let proxy = httpProxy.createProxyServer({ //代理地址为http时 target: 'http://www.xxx.com', //是否需要改变原始主机头为目标URL changeOrigin: true, //cookie的作用域 cookieDomainRewrite: { '*': proxyUri } // 当地址为https时加上秘钥和 // ssl: { // key: fs.readFileSync('server_decrypt.key', 'utf8'), // cert: fs.readFileSync('server.crt', 'utf8') // }, // if you want to verify the SSL Certs // secure: false }); //配置错误处理 proxy.on('error', function (err, request, response) { response.writeHead(500, { 'Content-Type': 'text/plain', }); response.status(500).end('服务器异常!'); }); //proxy使用第一种方式 /*app.use('/api', function(req, res){ //这里可以做处理 req.url = 'api' + req.url; proxy.web(req, res); return; })*/ //proxy第二种配置方式 app.use('/api', proxy); app.listen('3000', function () { console.log(`running express`); });
看需求看使用哪一种比较合适,一般用第二种
-
express配置使用cookie和路由
-
这里使用
cookie-parser
这个包,express配置cookie中间件后写cookie就不用那么麻烦了。const express = require('express'); const cookie = require('cookie-parser'); var app = express(); //可以创建路由,路由对象和express对象差不多,有路由就可以分模块去写请求了 const routerTmp = express.Router(); //使用cookie中间件 routerTmp.use(cookie()); //运用 routerTmp.get('/setCookie', function(req,res){ //设置cookie,这里我们不设置签名 res.cookie('cookieID','123456'); res.end(); }); routerTmp.get('/getCookie', function(req,res){ //cookie的读取 console.log(req.cookies); res.end(); } routerTmp.get('/delCookie', function(req,res){ //删除cookie res.clearCookie('cookieID'); res.end(); } //再使用这个路由,并配置请求路由的前缀 app.use('/router',routerTmp);
大体的用法就是这样,这里我们可以设置签名,我就不演示了。其实很简单增加加签名和解析就行了。
-
-
express的请求参数获取
-
get请求的参数获取,简直不要太简单
//http://localhost:3000?name=admin router.get('/', function(req, res) { //所有的get请求参数 console.log(req.query); //获取name console.log(req.query.name); res.end(); }
-
post请求参数的获取,借助
body-parser
中间件const express = require("express"); const bodyParser = require('body-parser') var app = express(); // parse application/x-www-form-urlencoded // 解析表单提交的post请求 app.use(bodyParser.urlencoded({ extended: false })) // parse application/json // 解析json app.use(bodyParser.json()) app.post("/",function(req,res){ //所有的post请求参数 console.log(req.body); //获取指定的post请求参数 console.log(req.body.name); res.end(); }); app.listen(3000);
tips:讲道理请求只分get、post,其余的例如delete、put...这些都是在post请求中带入不同的请求头来做鉴别的。
-
-
express中的中间件使用
-
什么是中间件,就相当于一个环节,其实很简单,上代码你就懂了。
-
假设我现在有个需求,我需要给每个请求的
req
对象添加一个test
方法,那我们就可以使用中间件给每一个req
对象注入这个方法。app.use(function(req, res, next){ req.test = function(){ consloe.log('这是req的test方法'); } next(); });
-
我们还可以配置全局异常处理器
//这个配置配置在最后几行比较好 app.use(function (err, req, res, next) { res.status(500).send('请求失败,稍后重试!'); });
总之这个中间件的使用你可以千变万化,满足要求即可。
-
-