方案: 以下Rest api列出属于特定订单的产品(在路径{orderid}中给出其ID)
/ API /订单/ {订单ID} /产品
的最佳/推荐响应是什么?
/ api / order / 123 /产品,其中订单123不存在,为什么?
选项
答案 0 :(得分:0)
404表示client error,"原始服务器未找到目标资源的当前表示,或者不愿透露其存在的情况"。
粗略地说,您正在向客户端(以及中间组件)报告客户端在请求该资源时出错。
这可能是一个不错的选择 - 资源被列为路径段的事实意味着hierarchy,并且如果资源不是这样的话,很可能存在,而不是其下属资源。
换句话说,如果/api/order/123
返回404,那么具有前缀/api/order/123/
的所有资源也的语义一致(但不是必需的)返回404。 / p>
为什么?
因为服务器的实际实现应该隐藏在统一接口之后。
统一界面的要点是客户端无法告诉它它不会与20世纪90年代的通用网站进行对话。就其而言,/api/order/123/products
可以是名为/api/order/123
的目录中名为products的文件。
那么如果我们在目录不存在的情况下尝试从该路径读取,那么文件系统会发生什么?文件系统会返回错误(ENOENT?),然后Web服务器通常会向客户端返回404响应。
您的REST API是一个适配器,它使您的系统看起来像一个网站。