Api 如何处理同一路径中丢失资源的404错误?

Api 如何处理同一路径中丢失资源的404错误?,api,Api,情况是这样的。。。我有一个端点是/v1/orders/{order\u id},它返回一个JSON blob,其中包含关于产品订单的所有必要信息。如果找不到订单,则返回404错误。订单完成后,可在/v1/orders/{order\u id}/product下载产品(一个简单的文本文件)。如果产品还没有得到保护,那么该端点将返回404 我觉得奇怪的是,如果您导航到/v1/orders/{order\u id}/product查找无效的订单id,您也会得到404错误。这让它看起来像是订单ID是正确

情况是这样的。。。我有一个端点是
/v1/orders/{order\u id}
,它返回一个JSON blob,其中包含关于产品订单的所有必要信息。如果找不到订单,则返回404错误。订单完成后,可在
/v1/orders/{order\u id}/product
下载产品(一个简单的文本文件)。如果产品还没有得到保护,那么该端点将返回404

我觉得奇怪的是,如果您导航到
/v1/orders/{order\u id}/product
查找无效的订单id,您也会得到404错误。这让它看起来像是订单ID是正确的,但产品还没有上市


您认为最好的方法是什么使其更有意义。

创建一个自定义404页面,其中包含一条消息和一个返回到主产品页面的链接


ie.“抱歉,您正在查找的产品或页面当前不可用。请单击此处返回产品页面”

如果找到产品但不安全,则端点不应返回404。您可以返回自定义错误代码,可能在200或500范围内,或者使用您认为更适合您的预定义错误代码之一;例如:

  • 202接受 请求已被接受处理,但处理尚未完成。[……]

  • 204无内容 服务器已完成请求,但不需要返回实体正文。[……]

  • 409冲突 由于与资源的当前状态冲突,无法完成请求。[……]


更多关于HTTP状态码的信息。

作为旁注,JSON中没有blob:JSON中定义的唯一数据结构是对象和数组。Blob可能代表编程中的二进制长对象,这可能会引起一些混乱。编辑为时太晚,但我之前的评论是错误的:还有一些基本类型,如字符串、数字和布尔值。哦,
数组
是一个
对象
,尽管它在JSON中有自己的特定符号。可以找到完整的列表