【问题标题】:Which HTTP code to use, in a REST API, for a subresource if the parent resource doesn't exist?如果父资源不存在,则在 REST API 中为子资源使用哪个 HTTP 代码?
【发布时间】:2014-10-15 17:15:08
【问题描述】:

我和我的团队正在编写一个 REST API,但有些概念仍未完全理解。

在给定资源中:objective/{id}/goal 目标是收集

如果消费者试图达到一个不存在的目标,API 将返回状态码404,非常简单。

例如:objective/999 返回404

由于某种原因,消费者试图从这个不存在的资源中获取目标:

例如:objective/999/goal 返回?

返回哪个代码最合适?我有一种感觉,这也应该是404。有些人正在考虑另一个错误代码,因为 API 应该首先通知父资源不存在。

【问题讨论】:

    标签: api rest http-status-codes


    【解决方案1】:

    使用 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 客户端,看到关于我为什么看到错误的人工消息仍然很好。当错误状态代码以几乎标准但略微偏离的方式使用时,好处会更大。

    【讨论】:

    • 这样就完成了消费者的状态码和信息。将标记为解决方案!
    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 2018-07-05
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多