我正在通过构建一个小的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的状态。
更多的资源/建议,以了解更多关于这个主题,是非常欢迎的。
Express API参考涵盖了这种情况。
请参阅“状态”和“发送”。
简而言之,您只需在调用json
或send
之前调用status
方法:
res.status(500).send({ error: "boo:(" });