【问题标题】:Axios POST request returns 404 error when sending to Node.js APIAxios POST 请求发送到 Node.js API 时返回 404 错误
【发布时间】:2021-01-17 05:40:27
【问题描述】:

我正在使用 React 前端和 Node.js 后端开发一个 Web 应用程序。前端使用 Axios 向后端发送 POST 请求,如下所示:

Register.js

...

handleSubmit = (e) => {
    e.preventDefault();
    const { email, password, name, dateofbirth } = this.state;
    const user = { email, password, name, dateofbirth };

    const url = "http://localhost:9000/register";
    axios
      .post(url, user, {
        headers: {
          "Content-Type": "application/json",
        },
      })
      .then((response) => console.log(response))
      .catch((error) => {
        console.error("You have made a big error. " + error);
        console.log(user);
      });
  };

...

当后端收到这样的请求时:


./routes/register.js

...

router.post("/register", async (req, res) => {
  console.log("Inside Home Login");
  res.writeHead(200, {
    "Content-Type": "application/json",
  });
  console.log("Users : ", JSON.stringify(users));
  res.end(JSON.stringify(users));
  
})

...

但是我在尝试发送任何内容时收到错误“POST http://localhost:9000/register 404 (Not Found)”。

【问题讨论】:

  • 你能通过邮递员或终端测试你的后端端点吗?也许你通过路由器不知何故不正确
  • 你确定你的后端服务器正在运行吗,(我知道这听起来微不足道,但只是想想我的常见错误)
  • 是的,API 肯定是开启的。
  • 你可以在你添加路由器到应用程序的地方添加你的代码吗?

标签: javascript node.js reactjs http axios


【解决方案1】:

我的猜测是您在 index.js 中进行路由。如果你能提供一个代码示例来解决这个问题。

如果是这样,事情就是定义一个类似的路由,

app.use('/register', yourImportedVariable);

确实在 http://localhost:9000/register 处定义了一个路由。

因此,如果在您的 routes/register.js 文件中您使用“/register”定义了一个 GET 端点,那么您的前端调用必须是 http://localhost:9000/register /注册

要修复它,请将您的路由重命名为“/”,或者使用上述网址修复您的前端调用。

【讨论】:

  • 是的,这就是解决方案。我的 index.js 有 app.use('/register', registerRouter);,所以我在 /routes/register.js router.post("/register", async (req, res) => { 中更改了这一行,将 /register 更改为 /。
猜你喜欢
  • 1970-01-01
  • 2021-06-05
  • 2011-10-11
  • 2022-01-19
  • 1970-01-01
  • 2020-04-16
  • 2021-04-24
  • 2022-01-05
  • 2019-12-03
相关资源
最近更新 更多