无匹配资源时API GET请求的响应方式是否合理?求参考文档
API资源未找到时的响应规范
你的假设完全正确
- 对于
GET .../pets/{petId}:当指定petId对应的宠物不存在时,返回HTTP 404 Not Found是标准做法。因为你请求的是一个具体的、预期存在的单个资源,而这个资源确实不存在,404能准确传达“请求的资源无法被定位”的语义。 - 对于
GET .../pets/:当数据库中没有任何宠物数据时,返回HTTP 200 OK和空数组[]是合理的。这个端点的语义是“获取所有宠物资源的集合”,空集合本身是有效的合法状态,并非错误——只是当前集合里没有元素而已,200表明请求处理成功,空数组则清晰返回了集合的当前状态。
相关标准依据
HTTP规范对状态码的定义明确了:
- 404状态码专门用于“服务器无法找到请求的资源”,完全匹配请求单个具体资源但资源不存在的场景;
- 200状态码用于“请求已成功处理”,当请求的是资源集合时,即便集合为空,请求本身是成功完成的,所以用200搭配空集合完全符合语义。
内容的提问来源于stack exchange,提问作者zaza
相关产品推荐
相关产品推荐

