我和我的团队正在编写REST API,但有些概念仍未完全理解。
在给定资源中:objective/{id}/goal
其中目标是集合
如果消费者试图达到不存在的目标,API将返回状态代码404
,非常简单。
例如:objective/999
返回404
由于某种原因,消费者试图从这个不存在的资源中获取目标:
例如:objective/999/goal
返回?
哪种代码最合适?我觉得这也应该是404
。有些人正在考虑另一个错误代码,因为API应该以某种方式告知父资源首先不存在。
答案 0 :(得分:7)
使用404.请记住,404响应可能包含响应正文。因此,您可以回复以下内容:
Request
GET /objective/7/goal
Response
404 Not Found
{
"type": "ParentNotFound",
"description": "The parent resource was not found.",
"parent_uri": "/objective/7"
}
通常,为错误状态代码包含某种响应主体是个好主意。即使以标准方式使用错误状态代码,作为API客户端仍然可以看到关于我看到错误的原因的人类消息。当错误状态代码以几乎标准但略微偏离的方式使用时,其好处甚至更大。