提问者:小点点

在nodejs和express制作的REST API中设置响应状态和JSON内容的正确方法


我正在通过构建一个小的rest API来玩Nodejs和express。我的问题是,设置代码状态以及响应数据的好做法/最佳方法是什么?

让我用一点代码来解释一下(我不会放启动服务器所必需的节点和express代码,只放所关注的路由器方法):

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];
  }
};

如你所见,状态显示为200,这是OK的。但这是最好的方法吗?是否存在我必须自己设置状态以及返回的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的状态。

更多的资源/建议,以了解更多关于这个主题,是非常欢迎的。


共1个答案

匿名用户

Express API参考涵盖了这种情况。

请参阅“状态”和“发送”。

简而言之,您只需在调用jsonsend之前调用status方法:

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