我正在努力使REST API不再总是响应,如果出现问题,将在返回的JSON中STATUS: 200 OK
包含一个error
密钥,并在出现问题时尝试使用正确的状态代码。
到目前为止,我已经将服务器的大部分移动到了正确的状态代码 200, 201, 400, 401, 403, 404, 500, 501, and 503
目前,我正在尝试找出最有效的方法来拒绝过时的客户端对API调用的访问。目前,我正在发送使用授权令牌编码的客户端版本。
我被困在使用状态码之间426, and 412
。426状态代码的标题似乎就像我想要的用例,但是描述让我有些担心。 412
如果我将版本控制从授权令牌中移开,并将其放在自己的标头中,这似乎是合适的。
这是我的第一个REST API,并且效果很好,我只是想将其转换为遵循最佳实践。所以我有点困惑。
TLDR;
注意:我的客户端不是Web浏览器。它是一种移动设备。
让我们快速地快速完成您提出的解决方案:状态代码412现在受RFC 7232第4.2节的授权。如果在RFC的第3节中描述的一个或多个前提条件阻止给定请求的完成,则将在条件请求的上下文中使用它。
代码426受RFC 7231第6.5.15节的约束。此代码使客户端知道用于访问资源的[http]协议版本太旧而无法完成请求。这两个代码均不适用于此处。
在此图表的帮助下,我认为这里有两个代码就足够了:
代码400 / 错误请求
400有点含糊(故意这样),表示请求存在一般性问题。
代码403 / 禁止
这有点冗长,因为此代码指示授权问题。但是,它并不是固有地与身份验证相关联的,因此您应该在这里很好。
就个人而言,我将使用400。您可能还想看看RFC 7807,以了解如何传输API错误的标准化方法。
归档时间: |
|
查看次数: |
1327 次 |
最近记录: |