在create-react-app 中配置proxy代理
proxy,默認為NULL,類型為URL,一個為了發送http請求的代理
在平時開發時,尤其前后端分離時,需要假數據來進行模擬請求,這個時候就需要proxy
代理來處理
create-react-app < 2.0
package.json 中配置
"proxy":{
"/api/**":{
"target":"https://easymock.spiritling.pub/",
"changeOrigin": true
}
}
create-react-app > 2.0
package.json 中配置(不推薦)
"proxy": "https://easymock.spiritling.pub/",
配置文件 /src/setupProxy.js
(推薦)
將 create-react-app
解包后,可以在 config
文件夾下找到配置
在 config/path.js
中存在 proxySetup: resolveApp('src/setupProxy.js'),
而 proxySetup
是只在 webpackDevServer.config.js
文件中使用,也就是說只在開發時使用
所以,可以在 /src/setupProxy.js 中配置
首先安裝 http-proxy-middleware
npm install http-proxy-middleware -D
然后文件配置
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
'/api/v1/',
proxy({
target : 'https://easymock.spiritling.pub/',
changeOrigin : true, // 設置跨域請求
PathRewrite : {
'^/api/v1' : '' // 將/api/v1 變為 ''
}
})
);
};
使用例子
01
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
'/api/v1/',
proxy({
target : 'https://easymock.spiritling.pub/',
changeOrigin : true
})
);
};
游覽器中請求為 https://example.com/api/v1/login
則經過代理后可以轉為 https://easymock.spiritling.pub/api/v1/login
02
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
'/api/v1/',
proxy({
target : 'https://easymock.spiritling.pub/',
changeOrigin : true,
PathRewrite : {
'^/api/v1' : ''
}
})
);
};
游覽器中請求為 https://example.com/api/v1/login
則經過代理后可以轉為 https://easymock.spiritling.pub/login
http-proxy-middleware
新版本 ≧ 1.0.0
在新版本大於等於 1.0.0 時使用會出現如下問題
proxy is not a function
也就是說 http-proxy-middleware
或者 setupProxy
會出現報錯 proxy is not a function
所以需要使用新版本的寫法才可以
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
app.use(createProxyMiddleware('/api/v1', {
target : 'https://easymock.spiritling.pub',
changeOrigin : true,
ws: true,
pathRewrite : {
'^/api/v1' : ''
},
}));
};