如何使用NodeJS和Express在RESTAPI中设置响应状态和JSON内容的适当方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我正在使用NodeJS和Express,构建一个小型RESTAPI。我的问题是,设置代码状态和响应数据的最佳实践/最佳方法是什么?

让我用一点代码来解释(我不会将启动服务器所需的节点和表示代码,仅是有关的路由器方法):

router.get('/users/:id', function(req, res, next) {
  var user = users.getUserById(req.params.id);
  res.json(user);
});


exports.getUserById = function(id) {
  for (var i = 0; i < users.length; i++) {
    if (users[i].id == id) return users[i];
  }
};

下面的代码工作得很好,当用Postman发送请求时,我得到了以下结果:

如您所见,状态显示为200,这是可以的。但这是最好的方法吗?是否需要自己设置状态以及返回的JSON?还是总是用快递来处理?

例如,我刚刚做了一个快速测试,并稍微修改了上面的get方法:

router.get('/users/:id', function(req, res, next) {
  var user = users.getUserById(req.params.id);
  if (user == null || user == 'undefined') {
    res.status(404);
  }
  res.json(user);
});

如您所见,如果在数组中找不到用户,我将只设置404状态。

更多关于这个主题的资料/建议是非常受欢迎的。

提问于
用户回答回答于

你可以这样做:

res.status(400).json(json_response);

这将将HTTP状态代码设置为400。

用户回答回答于

你只需调用给status方法之前调用jsonsend:

res.status(500).send({ error: "boo:(" });

扫码关注云+社区