使用http-proxy-middleware ... NodeJS / Express时无法传递req.params

时间:2019-02-21 14:40:40

标签: node.js reactjs express proxy axios

我是Node的新手,使用http-proxy-middleware时无法传递请求参数。

它抛出404错误

这是快递听众:

  app.put("/api/markets/:id",()=>{..code..});

这是axios PUT请求:

axios
  .put("/api/markets/" + idToPass, {..Object..})
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });

这是proxyMiddleware:

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(proxy("/api/*", { target: "http://localhost:3050" }));
};

我的客户端在localhost:3000上运行(反应应用程序) 我的服务器在localhost:3050上

打开浏览器的“网络”标签以检查请求时,我看到正在打

localhost:3000/api/markets/idContent

不是

localhost:3050/api/markets/idContent

应该是这样。

当我手动将其发送到

时,它可以工作
localhost:3050/api/markets/idContent

任何想法,我该如何解决?

提前谢谢

2 个答案:

答案 0 :(得分:1)

似乎问题出在代理配置上。截至目前,它仅与网址匹配一级。

改为尝试/api/api/**

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(proxy("/api", { target: "http://localhost:3050" }));
};

答案 1 :(得分:1)

您未指定基本URL。创建axios实例并指定正确的基本URL:

const instance = axios.create({
  baseURL: 'http://localhost:3050'
});

然后使用该实例发出每个axios请求:

instance
  .put("/api/markets/" + idToPass, {..Object..})
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });