Axios请求始终发送回200

时间:2018-09-05 21:24:17

标签: node.js reactjs express axios

我正在做一个非常简单的PUT请求(请参阅下文。)由于某种原因,无论我从快递服务器axios发回的响应代码是200,在快递日志中,它都显示正确的响应: >

PUT /v1/org/password/reset 404 339.841 ms - 71

这是发送响应服务器端的代码行:

res.json({ message: 'Could not find user with that token or the token expired.' }).status(404);

我知道此行已被触发,因为登录到浏览器控制台的正文显示了相同的消息。查看屏幕截图。enter image description here

我唯一能想到的是浏览器正在缓存响应?

    axios.put(`http://localhost:3000/v1/org/password/reset`, {
     password: "example",
     token: "19u8e8j2039d3d32blahblah"
   })
 .then(function (response) {
   if(response.status == 200){
       console.log("success",response)
     //handle success here
   }
 })
 .catch(function (error) {
   console.log("error", error);
   //handle error here
 });

2 个答案:

答案 0 :(得分:2)

问题出在后端。尝试以这种方式返回响应:

res.status(404).json({ message: 'Could not find user with that token or the token expired.' });

根据Express 4文档-https://expressjs.com/en/4x/api.html

  

中间件功能是顺序执行的,因此顺序   中间件的包含很重要。

因此,当您调用“发送”方法时,Express将HTTP正文内容写到响应中,这就是为什么首先需要填充标头的原因。

答案 1 :(得分:2)

像这样先尝试设置状态

res.status(404).json({ message: 'Could not find user with that token or the token expired.' });