如何处理同一路径中缺少资源的404错误?

时间:2016-05-18 20:46:00

标签: api

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

对我来说,如果您导航到/v1/orders/{order_id}/product以获取无效的订单ID,您会收到404错误,这似乎很奇怪。这种情况看起来可能是订单ID正确但产品尚未公布。

您认为最好的方法是让这更有意义。

2 个答案:

答案 0 :(得分:0)

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

  • 202接受
      

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

  • 204没有内容
      

    服务器已完成请求但不需要返回实体主体。 [...]

  • 409冲突
      

    由于与资源的当前状态发生冲突,无法完成请求。 [...]

有关HTTP状态代码的the RFC 2616中的详细信息。

答案 1 :(得分:-1)

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

即。 “抱歉,您要查找的产品或页面目前无法使用。点击此处返回产品页面”