React“fetch()”可以“获取”但不会“发帖”

时间:2018-03-03 02:48:00

标签: reactjs post get fetch

我是React中“fetch”命令的新手。我可以用它来获取,但我没有运气用它来POST。我运行以下简单代码。

onSubmit(event) {
  // For some reason, "fetch" is GETTING instead of POSTING.
  fetch('/questionare/', {
    method: 'post',
    body: JSON.stringify({greeting: "Hello"})
  }).then((res) => alert(res.json));
}

通过以下代码在后端处理POST请求的内容。

router.post('/', function(req, res, next) {
  res.json(req.body);
});

因此,Web浏览器应为响应创建一个警告框,这是我在请求中发送的确切内容。这没有发生。我查看了我的服务器日志,并发现没有发出POST请求。 “fetch”函数似乎忽略了“method”参数。它总是“GET”请求,即使我告诉它做“POST”请求。我知道在另一篇文章中,他们说请求中的URL末尾需要有一个斜杠(fetch() doing GET instead of POST on react-native (iOS))。但是,这并非如此。有没有人看到有什么问题?

编辑3-3-2018:

根据建议,我包含了标题。但是,该软件仍然发送GET而不是POST请求。使用“fetch”的代码现在如下。还有什么可能是错的?

onSubmit(event) {
  // For some reason, "fetch" is GETTING instead of POSTING.
  fetch('/questionare/', {
    method: 'post',
    body: JSON.stringify({greeting: "Hello"}),
    headers: new Headers({
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    })
  })
  .then(res => res.json)
  .then(console.log);
}

1 个答案:

答案 0 :(得分:0)

您还必须添加headers,以表明您的内容属于application/json类型。

fetch('/questionaire', {
  method: 'post',
  body: JSON.stringify(data),
  headers: new Headers({
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  })
})
  .then(response => response.json())
  .then(console.log)