RESTful 由于依赖性问题而无法满足的请求的状态代码

RESTful status code for a request that cannot be satisfied because of a dependency issue

我的 payment 接受 POST 的端点应该在用户没有任何 payment methods 配置时拒绝请求。在这种情况下,正确的 HTTP 状态代码是什么?

当系统本身无法达到请求要求的状态并且必须先完成另一个请求(创建支付方式)时,应引发的正确 HTTP 状态代码是什么?

我查看了 428 Precondition Required,但这似乎与 headers 有关,而不是系统状态。

您是否调查过错误 424 Failed_Dependency?我想这可能是你想要的。

http://www.restpatterns.org/HTTP_Status_Codes/424_-_Failed_Dependency

我会选择 400 Bad Request。如果您在响应中需要更具体的说明或提示,您可以 return 一个正文,它会指出错误的确切性质。

您不需要为所有与内部业务相关的错误案例分配特定的 HTTP 错误代码。事实上,无论如何这可能是不可能的。

400规格:https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1

那里的相关引述:

indicates that the server cannot or will not process the request due to something that is perceived to be a client error

关于 4xx 代码的一般情况:

the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition