首页 > 解决方案 > 对为什么我的 fetch 方法没有发送 JSON 数据感到困惑

问题描述

前端,使用 React

async callAPI() {
  const data = { username: "eric", password: "password" };
  const response = await fetch("/login", {
    method: "post",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(data)
  });

  console.log(response);
  const body = await response.json();

  console.log(body);

  return body;
}

后端,使用快递

app.post("/login", (req, res) => {
  console.log(req.body);

  let userN = User.findOne(
    { username: req.body.username, password: req.body.password },
    (err, doc) => {
      console.log(doc);

      res.send({
        username: doc.username,
        password: doc.passsword,
        recipeBook: doc.recipeBook
      });
    }
  );
});

当我到达线路时,

console.log(req.body) 

在我的快速代码中,我最终得到了“未定义”,所以看起来提取实际上并没有将数据发送到我的后端。在我的前端,我最终得到了这个错误,

SyntaxError: Unexpected token < in JSON at position 0

为什么它不会将数据发送到我的后端?我还应该使用 Axios 之类的库来进行后端和前端之间的通信,而不是使用 fetch api 吗?最后,为什么后端有不同的方法,比如“get”和“post”?为什么“post”是唯一允许有 req.body 的方法,而“get”不是?

标签: javascriptreactjsexpress

解决方案


事实证明,我没有使用名为“body-parser”的东西。

https://github.com/expressjs/body-parser


推荐阅读