我正在使用Nodejs和通过构建一个小的休息API表达。我的问题是,什么是良好的做法/最好的方式来设置代码状态,以及响应数据?
让我用一点代码解释(我不会把节点和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]; } };
下面的代码完美地工作,当与Postman发送请求时,我得到以下结果:
正如你可以看到,状态显示200,这是确定。但这是最好的方法吗?是否有一种情况,我应该自己设置状态,以及返回的JSON?还是总是由快速处理?
router.get('/users/:id',next) { var user = users.getUserById(req.params.id); if (user == null || user == 'undefined') { res.status(404); } res.json(user); });
如你所见,如果在数组中找不到用户,我将设置状态为404。
欢迎了解更多关于此主题的资源/建议。
解决方法
Express API参考涵盖了这种情况:
http://expressjs.com/4x/api.html#res.send。
简而言之,你只需要在调用json或send之前调用status方法:
res.status(500).send({ error: "boo:(" });