快速:在服务中引发错误时指定 HTTP 状态代码

我想在我的一个服务失败时向客户端返回正确的 HTTP 状态代码。

让我们假设我们有一个简单的快速应用,其中服务是从控制器调用的。该服务可能由于多种原因而失败,例如无效的用户ID,代码中的某些错误或仅仅是因为不存在具有给定ID的用户。要返回正确的HTTP状态代码(分别为400,500和404),当我从服务中抛出它时,我需要以某种方式将其附加到错误中。我该怎么做,是否有任何最佳实践?还是我完全误解了什么?getUserById(userId) {...}

到目前为止,我只是像这样完成:

throw { message: 'No user with this ID exists', status: 404 }

然而,我确实觉得这不是很好的可维护性,因为人们应该只抛出标准错误


明月笑刀无情
浏览 114回答 1
1回答

小怪兽爱吃肉

您可以创建一个错误对象,然后只向其添加自定义属性。let err = new Error('No user with this ID exists');err.status = 404;throw err;或者,我经常将其封装在函数中:function error(msg, status = 500) {    let err = new Error('No user with this ID exists');    err.status = status;    throw err;}或者,您可以创建自己的错误子类class MyError extends Error {    constructor(msg, status = 500) {        super(msg);        this.status = status;    }}然后使用它:throw new MyError('No user with this ID exists', 404);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript