我们今天讨论了导致状态码 200, OK的传输操作。返回的两个对象看起来像这样。
第一个相当容易掌握(并遵循预期的合同)。
{ name: "john", age: 34, city: "stockholm" }
第二个,遵循合同但毫无疑问的错误数据。
{ name: null, age: -3.141526, city: "http://some.com/address/poof" }
一方声称状态码 200 不正确,因为值错误。另一方辩称,状态码描述了操作本身以及请求/响应的格式,因为传输与合同一致,所以进展顺利。
很明显,REST 端点从它获取数据的源中获取了异常。因此,第一方希望结果是404 not found或500 internal error。在前一种情况下对象结构为空(一直为空)并且在后一种情况下它不尝试遵循约定格式的条件下,另一方对其开放。
查看Kamasutra,据说:
请求已成功。响应返回的信息取决于请求中使用的方法。
现在,从技术上讲,我们无法确定请求的资源是否有名称,可能计划出生在 PI 年份,并且恰好居住在将名称更改为 URL 的城市。这实际上是可能的,尽管可能性很小。但是,我希望看到状态码 200 中未包含的内容的明确声明。
问题:要求状态码 400 或更高是否有效,因为这些值看似(或什至明显)错误?