概述这是一个设置代理的神器。webpack的devServer.proxy使用了非常强大的http-proxy-middleware包。Node.js代理很简单。轻松配置用于连接、发布、浏览器同步等的代理中间件。对http://www.example.org的代理/api请求varexpress=require('express');varproxy=require('http-proxy-middleware');varapp=express();app.use('/api',proxy({target:'http://www.example.org',changeOrigin:true}));app.listen(3000);//http://localhost:3000/api/foo/bar->http://www.example.org/api/foo/bar注意:需要设置changeOrigin=tureinstall$npminstall--save-devhttp-proxy-middleware核心概念varproxy=require('http-proxy-中间件');varapiProxy=proxy('/api',{target:'http://www.example.org'});//\____/\_____________________________///||//contextoptions//'apiProxy'现在可以用作服务器中的中间件。context:定义哪些请求将由目标主机options.target:目标主机(协议+主机名)也可以使用速记配置proxy('http://www.example.org:8000/api');相当于proxy('/api',{target:'http://www.example.org:8000'});上下文匹配规则提供了另一种方法来确定应该代理哪些请求;如果无法使用服务器的路径参数来设置代理,则需要更大的灵活性。matchpathproxy({...})-匹配所有路径,所有请求都是proxied.proxy('/',{...})-匹配所有路径,所有请求都是proxied.proxy('/api',{...})-匹配路径/api多路径匹配proxy(['/api','/ajax','/someotherpath'],{...})-context是一个数组,匹配/api,/ajax,/someotherpathpath通配符路径匹配注意,一个星号''只能匹配当前级别的任意字符,需要两个才能匹配任何多级路径:'*'可以访问micromatch或glob查看更多通配符示例proxy('**',{...})匹配所有路径,所有请求都被代理。proxy('*/.html',{...})匹配所有以.html结尾的路径proxy('/*.html',{...})匹配以.html结尾的绝对路径proxy('/api/*/.html',{...})匹配/api路径下,以.html结尾的路径proxy(['/api/','/ajax/'],{...})组合多个模式proxy(['/api/','!/bad.json'],{...})排除选项(options)option.pathRewrite:重写目标的url路径,key使用正则表达式匹配路径注意,当路径过长时,可以使用该选项设置,方便后面调用接口//重写路径pathRewrite:{'^/old/api':'/new/api'}//删除路径pathRewrite:{'^/remove/api':''}//添加基本路径pathRewrite:{'^/':'/basepath/'}//PathcustompathRewrite:function(path,req){returnpath.replace('/api','/base/api')}暂时用这么多,更多选项见https:///github.com/chimurai/h...
