API 设计 - 客户端请求中的可选正文 - 如果验证失败,状态代码为 return

API design - Optional body in client request - Status code to return if validation fails

在我们的 API 中,端点之一将期望客户端仅在特定情况下提供 body/payload。

如果 API 无法根据客户端来源为给定请求生成有效载荷,那么我们希望我们的 API 向客户端提供具有正确状态代码的响应,以便他们知道他们必须提供额外的信息。一旦客户端使用 body/payload 完成请求,那么 api 将正常处理请求。

我只是想知道在 API 设计中是否有任何标准的、预定义的状态代码或程序来实现这种端点,或者我们是否必须使用一些自定义状态代码拒绝请求然后询问客户端实现基于自定义代码的逻辑?

谢谢,

维诺斯

HTTP 状态代码不会,也不打算精确映射每个现实世界的错误。它们代表错误类别。

例如,404 表示找不到资源,但如果您的路径是 /customers/11/animals/5,那么路径可能有几处错误。例如,客户 11 可能没有动物 5,或者可能没有客户 11。"animal not found" 没有 http 响应。或者您的 API 可能没有任何以 URL 模式开头的呼叫。

您应该 return 一个状态代码,它表示您遇到的 "category" 错误(在本例中,未找到某些内容),并且响应正文应包含有关该错误的更具体的详细信息.为了使事情更简单,我发现如果数据结构对于成功和错误(它使解析更容易)与每个响应不同的 "data" 字段相同,这会很有帮助。

这是一个例子:

status code: 404 not found
body: { 
    "messageDetailCode" :"CustomerNotFound", 
    "messageDetail" : "Customer not found", 
    "data" : null 
}

进一步阅读: