有效负载中指定的无效资源的 HTTP 状态代码

Posted

技术标签:

【中文标题】有效负载中指定的无效资源的 HTTP 状态代码【英文标题】:HTTP Status code for invalid resource specified in payload 【发布时间】:2018-07-19 20:14:16 【问题描述】:

我有一个 REST 请求(虽然不是完全 REST)。输入数据通过 HTTP 负载作为 XML 接收,因此要读取的记录在 xml 中指定为,

<Item> <ID>1</ID> </Item>

这里,如果在数据库中没有找到ID'1',我应该返回404 Not found。

根据https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html404 Not Found 被称为The server has not found anything matching the Request-URI. 但在我的情况下,可以成功访问 URI,并且无法找到有效负载中的数据。使用404 合适还是应该使用任何其他状态码?

【问题讨论】:

【参考方案1】:

首先,您为什么要发送有效载荷来检索数据?如果您想以 RESTful 方式检索数据,您应该在路径中发送 id,例如 /some-resource/1。我希望有一个很好的理由不遵循这个标准。

在我看来,无论如何,返回404 是最好的方法。如果没有找到资源,任何客户端都会期望 404,即使正式定义指定资源在 URL 中也是如此。

【讨论】:

是的,无论你如何向服务器请求资源(url,xml有效负载)结果都是一样的,它不存在,404

以上是关于有效负载中指定的无效资源的 HTTP 状态代码的主要内容,如果未能解决你的问题,请参考以下文章

错误码

Azure Synapse:Spark 作业定义中指定的目标 Spark 池未处于成功状态。当前状态:供应

简谈http状态码

找不到映像文件中指定的资源类型 GetLastError 1813

如何在颜色状态列表资源中指定背景颜色?

预检响应具有无效的 HTTP 状态代码:401 角度