React中http-proxy-middleware代理使用


React項目npm run start啟動本地服務后瀏覽器訪問http://localhost:3000

start命令也可自定義port指定本地運行端口(eg: PORT=3002)

 

對於單點登錄關聯的站點,通過DNS服務器指向,綁定域名和IP,此時項目訪問不能使用localhost或計算機IP地址,需要使用域名訪問,通過一些軟件配置host(eg: 127.0.0.1 app.web.com)此時本地環境就可以訪問http://app.web.com:3002。

對於網關映射的服務地址,也需要配置對應的host完成本地環境的接口請求、數據交互。

 

現在流行微服務,在一個項目中會出現訪問請求多個服務器,http-proxy-middleware這個插件就能幫助我們實現業務需求。

 

http-proxy-middleware插件用於設置代理,轉發請求給其他服務器,解決前端的跨域請求

插件安裝:npm install --save-dev http-proxy-middleware

 

使用:

src目錄下新建setupProxy.js:

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function (app) {

    // 將/userapi相關接口代理轉發target對應的服務器上

    // 相當於請求了http://appuser.web.com/userapi

    app.use('/userapi', createProxyMiddleware({

        target: 'http://appuser.web.com',

        changeOrigin: true,// 默認為false,是否改變原始主機頭為目標url

        ws: true,// 是否代理websockets

        pathRewrite: {// 重寫path地址

            '^/api/aaa': '/api/bbb'// 將請求的/api/aaa重寫解析到/api/bbb

        },

        router: {// 用於重寫目標服務器

            // 當請求的host為172.14.14.102時重寫目標服務器為后面的地址

            '172.14.14.102': 'http://appuser.webapi.com'

        }

    }))

    // 可以配置任意數量的轉發,代理不同的接口和服務器

    app.use('/adminapi', createProxyMiddleware({

        target: 'http://appadmin.web.com',

        changeOrigin: true,// 默認為false,是否改變原始主機頭為目標url

        ws: true,// 是否代理websockets

        pathRewrite: {// 重寫path地址

            '^/api/ccc': '/api/ddd'// 將請求的/api/ccc重寫解析到/api/ddd

        },

        router: {// 用於重寫目標服務器

            // 當請求的host為172.14.14.102時重寫目標服務器為后面的地址

            '172.14.14.102': 'http://appadmin.webapi.com'

        }

    }))

}

 

createProxyMiddleware這里是省略了第一個參數,表示匹配的路徑,省略時表示匹配任何路徑

createProxyMiddleware('/', {})、createProxyMiddleware({})、

createProxyMiddleware('**', {})都表示匹配任何路徑,轉發所有請求

也支持數組,函數等多種形式,數組表示匹配多個路徑

createProxyMiddleware(['/api', '/data'], {})

還可以使用通配符來進行匹配

createProxyMiddleware('**/*.html', {})任何以.html結尾的請求

createProxyMiddleware('/userapi/*.html', {})userapi下所有以.html結尾的請求

createProxyMiddleware('!**/*.json', {})非!符號表示排除任何以.json結尾的請求

 

http-proxy-middleware原理是對nodejs的http-proxy庫作了一層封裝,支持http-proxy的option中的選項配置


免責聲明!

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



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