禁用的 REST API 功能的 HTTP 状态代码是什么?

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

我们拥有所有用户都可以免费使用的 REST API 端点,以及用户在明确启用并支付某些特定功能后可以使用的其他端点。

如果用户未启用,从付费端点返回的正确状态代码应该是什么?

我看到 2 个选项:

  1. 402 需要付款
  2. 403 禁止

402 被描述为保留供将来使用的非标准客户端错误状态响应代码,所以我认为这不是适合这种情况的正确状态代码。

还有其他更适合这种情况的状态代码吗?

rest http http-status-code-403 http-status-codes
2个回答
5
投票

我会选择 403 Forbidden。这基本上就是归结起来的。您尝试访问您无权访问的端点。

用户可以自己启用它这一事实并没有太大改变。只要他们不这样做,它就仍然是被禁止的。

引用规格

403(禁止)状态码表示服务器理解 请求但拒绝授权。 想要制作的服务器 公众可以在以下位置描述该请求被禁止的原因: 响应负载(如果有)。

因此,添加响应正文绝对是件好事,解释错误发生的原因以及用户如何授予自己访问权限。

只要402需要付款是“保留供将来使用”,我就会避免它。 REST API 通常通过使用库发出 HTTP 请求的脚本进行访问。如果脚本无法识别 402,则可能会导致意外行为。大多数人可能会做得很好,但与其后悔,不如保存。

其他 4xx 状态代码(这绝对属于)不适用于此场景。


0
投票

423 HTTP 状态似乎最相关(RFC-4986):

HTTP 423 Locked 客户端错误响应状态代码表示资源已锁定,这意味着无法访问该资源。其响应正文应包含 WebDAV 的 XML 格式的信息。

HTTP/1.1 423 Locked
Content-Type: application/xml; charset="utf-8" 
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
  <D:error xmlns:D="DAV:">
    <D:lock-token-submitted>
      <D:href>/workspace/webdav/</D:href>
    </D:lock-token-submitted>
  </D:error>

但我更喜欢 JSON 正文。

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