我正在为一个项目设计REST API,在该项目中,用户始终处于多个“计划”之一中-每个计划都定义了一些资源限制,例如帐户可能拥有的最大用户数或他们可以上传的最大数据数。一旦达到这些限制之一,用户就可以升级他们的计划(基本上是付费)以获得更多资源。
我想返回一个特殊的状态代码,该状态代码表示由于帐户资源限制而无法执行操作的情况,因此升级计划将解决此问题-例如,如果用户使用了其存储容量的100%,并尝试上传其他文件,他们将收到此回复。
候选人是恕我直言:
403 Forbidden
-但是,我想区分这种情况和其他情况,即用户只是缺乏执行此操作的权限。401 Unauthorized
-不是一个好主意,我们正在使用它来解决与身份验证相关的问题。402 Payment Required
-有道理,但我担心使用非标准但保留的状态码甚至不太标准的
423 Locked
东西,例如将来我们不太可能将其用于其他任何东西
另一种选择是使用一些非常标准的东西,例如,403
但在响应主体中指出错误的细节。
我想知道您相信哪种方法(a)从长远来看效果最好,并且(b)将更好地坚持RESTful原则。