为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2022-08-18 16:14:43
我想在我的一个服务失败时向客户端返回正确的 HTTP 状态代码。让我们假设我们有一个简单的快速应用,其中服务是从控制器调用的。该服务可能由于多种原因而失败,例如无效的用户ID,代码中的某些错误或仅仅是因为不存在具有给定ID的用户。要返回正确的HTTP状态代码(分别为400,500和404),当我从服务中抛出它时,我需要以某种方式将其附加到错误中。我该怎么做,是否有任何最佳实践?还是我完全误解了什么?getUserById(userId) {...}到目前为止,我只是像这样完成:throw { message: 'No user with this ID exists', status: 404 }然而,我确实觉得这不是很好的可维护性,因为人们应该只抛出标准错误。
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超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);


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信