我应该在Restful API中使用不同的饱和度代码,而不是仅使用200吗?

问题描述 投票:0回答:1

我正在开发RESTful API服务。我和我的团队负责人之间在以下主题上存在分歧:“ HTTP响应状态代码”。

我的团队负责人说,用RFC编写的默认HTTP状态代码非常糟糕,很难在客户端(前端)处理它们。他认为响应状态中的自定义状态代码是HTTP状态代码200(每次200)的最佳方式。当试图在没有权限的情况下执行操作时,他的响应正文将如下所示:

HTTP/1.1 200 OK

{
    code: 1005,  // Custom code instead 403
    data: {
        message: "Forbidden."
    }

}

我认为这是错误的回应方式。我的响应方案将是这样的:

HTTP/1.1 403 Forbidden

{
    code: 403,
    success: false,
    message: "Forbidden."

}

我们应该使用RFC HTTP状态代码,还是可以使用自己的自定义?最佳和正确的方法在哪里?

rest http rfc
1个回答
0
投票

简称

您绝对正确。

答案很长

在静态API设计中,您必须使用RFC-7231中指定的官方HTTP代码。请不要为每个请求发送200 OK。 200 OK保留给实际成功的请求,服务器以特定资源的有效状态作为响应。大多数情况下都有代码。如果仍然需要区分相同类型的错误,例如FORBIDDEN,则可以一起发送自定义错误代码。但是HTTP响应仍然是错误,因此您不应使用200 OK。

关于建议的错误方案,您不应在正文中发送代码和状态。这已经作为HTTP状态发送,因此是冗余的。该主体应包含其他上下文,这将有助于API客户端解决问题。

设计良好的API错误响应应包含:

  • 根据服务器上的每个请求生成的请求ID
    • 详细错误消息
    • ((可选)内部api错误代码
    • ((可选)错误类别
    • ((可选)对api文档/错误描述的引用

示例

HTTP/1.1 403 Forbidden
{ 
    "requestId": "xxxxxxxxxxxxx", 
    "message": "You are not allowed to access this resource.",
    "category": "AccessControl"
}

如果这仍然不能使您的团队满意,请相信您可能会指出一些设计良好的REST API:

© www.soinside.com 2019 - 2024. All rights reserved.