如何在 React 应用程序中使用 http-proxy-middleware 重写请求路径?
How to rewrite request path using http-proxy-middleware in a react app?
我在我的 React 应用程序中使用 http-proxy-middleware,我的设置如下:
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function(app) {
app.use(
"/api/v1",
createProxyMiddleware({
target: "https:test.com/",
changeOrigin: true
})
);
};
我的应用程序的一些 api 请求有请求 url 作为:
http://localhost:3000/products-and-details/api/v1/proxy/trend/api/v1/listProducts
我想将其更改为:
http://localhost:3000/api/v1/proxy/trend/api/v1/listProducts.
为了实现这一点,我在使用 pathRewrite 将请求发送到目标之前修改请求路径,如下所示:
pathRewrite: {
'^/products-and-details': ''
}
但这似乎不起作用,请求 url 保持不变,没有任何变化。谁能帮忙指出我做错了什么?
编辑: 我的 http-proxy-middleware 依赖的版本是 ^2.0.3
我的资深同事帮我解决了这个问题。似乎请求 http://localhost:3000/products-and-details/api/v1/proxy/trend/api/v1/listProducts 根本没有被代理拦截。因此,为了拦截这些请求,我们必须确保将其包含在我们的代理中间件的 context 中。
因此,就我而言,它如下所述:
app.use(["/api/v1", "/products-and-details/api/v1"])
然后使用 PathRewrite 修改请求路径,然后再向服务器发出实际请求,如下所示:
pathRewrite: {"/products-and-details": ""}
我在我的 React 应用程序中使用 http-proxy-middleware,我的设置如下:
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function(app) {
app.use(
"/api/v1",
createProxyMiddleware({
target: "https:test.com/",
changeOrigin: true
})
);
};
我的应用程序的一些 api 请求有请求 url 作为: http://localhost:3000/products-and-details/api/v1/proxy/trend/api/v1/listProducts 我想将其更改为: http://localhost:3000/api/v1/proxy/trend/api/v1/listProducts.
为了实现这一点,我在使用 pathRewrite 将请求发送到目标之前修改请求路径,如下所示:
pathRewrite: {
'^/products-and-details': ''
}
但这似乎不起作用,请求 url 保持不变,没有任何变化。谁能帮忙指出我做错了什么?
编辑: 我的 http-proxy-middleware 依赖的版本是 ^2.0.3
我的资深同事帮我解决了这个问题。似乎请求 http://localhost:3000/products-and-details/api/v1/proxy/trend/api/v1/listProducts 根本没有被代理拦截。因此,为了拦截这些请求,我们必须确保将其包含在我们的代理中间件的 context 中。
因此,就我而言,它如下所述:
app.use(["/api/v1", "/products-and-details/api/v1"])
然后使用 PathRewrite 修改请求路径,然后再向服务器发出实际请求,如下所示:
pathRewrite: {"/products-and-details": ""}