http-proxy-middleware


概述

這是設置代理的神器,webpack的devServer.proxy就是使用了非常強大的 http-proxy-middleware 包。Node.js代理很簡單。 輕松配置代理中間件進行連接,發布,瀏覽器同步等等。
代理 /api 向 http://www.example.org請求


var express = require('express');
var proxy = require('http-proxy-middleware');

var app = 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 = ture

安裝


$ npm install --save-dev http-proxy-middleware

核心概念


var proxy = require('http-proxy-middleware');

var apiProxy = proxy('/api', {target: 'http://www.example.org'});
//                   \____/   \_____________________________/
//                     |                    |
//                   context             options

// 'apiProxy' is now ready to be used as middleware in a server.

context: 定義哪些請求要被目標主機代理
options.target:目標主機 (協議+主機名)
也可以使用簡寫配置
proxy('http://www.example.org:8000/api');
等價於 proxy('/api', {target: 'http://www.example.org:8000'});

context匹配規則

提供另一種方法來決定應該代理哪些請求; 如果無法使用服務器的路徑參數來設置代理,那么就需要更多的靈活性。

  • 匹配路徑

proxy({...}) - 匹配所有路徑,所有請求都被代理.
proxy('/', {...}) - 匹配所有路徑,所有請求都被代理.
proxy('/api', {...}) - 匹配路徑 /api

  • 多個路徑匹配

proxy(['/api', '/ajax', '/someotherpath'], {...}) - context是個數組,匹配 /api, /ajax, /someotherpath 路徑

  • 通配符路徑匹配

注,一個星''只能匹配當前層級的任意字符,匹配任意的多級路徑則需用兩個:'*'
可以訪問 micromatch 或者 glob 查看更多通配符的例子
proxy('**', {...}) 匹配所有路徑,所有請求都被代理.
proxy('*/.html', {...}) 匹配所有以 .html 為結尾的路徑
proxy('/*.html', {...}) 匹配以 .html 結尾的絕對路徑
proxy('/api/*/.html', {...}) 匹配在 /api 路徑下的,且以 .html 結尾的路徑
proxy(['/api/', '/ajax/'], {...}) combine multiple patterns
proxy(['/api/', '!/bad.json'], {...}) exclusion

選項(options)

option.pathRewrite: 重寫目標的url路徑,key用正則表達式來匹配路徑
注,路徑太長時,可以用這個選項設置,方便后期調用接口


// 重寫路徑
pathRewrite: {'^/old/api' : '/new/api'}

// 移除路徑
pathRewrite: {'^/remove/api' : ''}

// 添加基礎路徑
pathRewrite: {'^/' : '/basepath/'}

// 路徑自定義
pathRewrite: function (path, req) { return path.replace('/api', '/base/api') }

暫時用到這么多,更多選項查看https://github.com/chimurai/h...

來源:https://segmentfault.com/a/1190000016075134


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM