代码之家  ›  专栏  ›  技术社区  ›  jnorris

如何区分404实体不存在和不正确的端点?

  •  10
  • jnorris  · 技术社区  · 16 年前

    使用REST原则,404似乎被用来表示实体不存在。然而,客户机如何区分这种情况和完全命中错误端点?

    我想区分“您到达了正确的端点,但该实体不存在”和“您不在正确的端点”。从技术上讲,这可以通过使用其他响应代码、自定义标题等进行区分。但我主要关注这方面的REST最佳实践,因此客户机尽可能简单和标准。

    3 回复  |  直到 16 年前
        1
  •  2
  •   maerics    16 年前

    我相信确定正确的终点是REST客户的唯一责任。(当然,端点解析服务可以很容易地实现。)404错误只意味着该特定端点不承载该特定实体。

    RESTful设计中的任何内容都不要求服务器知道客户机是否与“正确”的主机交互。

        2
  •  2
  •   Darrel Miller    16 年前

    那个实体不存在

    如果URL没有标识资源,它怎么可能是正确的端点?我能想到的唯一可能的情况是实体已被删除,在这种情况下410消失是正确的响应。

        3
  •  1
  •   Sean Vieira    16 年前

    假设有这样一个框架:

    / -- root
    |____+
         /object
         |____+
              /members
              |____+
                   /attributes
                   |____+
                        /attribute_1
                        /attribute_2
                        ...
                        /attribute_n
    


    如果你的意思是,你想能够区分有人打人
    /object/members/attributes/incorrect_attribute
    (一)
    有人打了我 /object/members/big-bird
    (假设 members 本身不能是有效的终结点
    [而且 /object/members/attributes
    那么我相信你可以返回 501 403 错误(禁止)取决于你想把责任推到哪里。(或者, 418 (我是茶壶)在这里也有效)。


    最后,如果 attribute_n 为了生存而不再存在,你可以用 410 (资源不见了)。

    见: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

        4
  •  0
  •   badunius    6 年前

    HTTP status codes page

    服务器无法或将不处理该请求 (例如:。, 格式错误的请求语法, 欺骗请求路由 )