204 No Content
是一个受欢迎的回应DELETE
,偶尔PUT
也是如此。
但是,如果要实现HATEOAS,则返回200 OK
带有链接的a可能更理想。这是因为HATEOAS REST API为客户端提供了上下文。想一想用户应用程序在成功发出删除命令后导航到的位置。这是一个简短的文章摘录,对此有更多讨论。有关更完整的讨论,请参见博客文章。
如果要构建HATEOAS应用程序,请避免204条响应。
这是我在构建非平凡的REST API时学到的关于REST API设计的课程。为了尽可能地支持客户端,REST API不应返回204(无内容)响应。
从服务的角度来看,204(无内容)响应可能是对POST,PUT或DELETE请求的完全有效的响应。特别是对于DELETE请求,这似乎非常合适,因为您还能说什么?
但是,从正确的HATEOAS感知客户端的角度来看,204响应是有问题的,因为没有链接可循。当超媒体充当应用程序状态的引擎时,没有链接时就没有状态。换句话说,204响应会丢弃所有应用程序状态。
本文介绍了POST
,PUT
,DELETE
和GET
。以下是有关的具体讨论DELETE
:
响应DELETE请求
DELETE请求表示删除资源的意图。因此,如果服务成功处理了DELETE请求,除了返回204(无内容)外,它还能做什么?毕竟,资源刚刚被删除。
资源通常是集合的成员,或者由容器“拥有”。例如,http://foo.ploeh.dk/api/tags/rock表示一个“ rock”标签,但另一种查看方式是/ rock资源包含在标签容器中(它本身是一个资源)。Atom Pub用户应该熟悉它。
假设您要删除http://foo.ploeh.dk/api/tags/rock资源。为了实现该目标,您可以针对它发出DELETE请求。如果所有的客户端回来是204(无内容),它只是失去了它的背景。它从那里去哪里?除非您保持对客户端的状态,否则您将不知道自己来自何方。
API不应返回204(无内容),而是应该会有所帮助并建议要去的地方。在此示例中,我认为要提供的一个明显链接是http://foo.ploeh.dk/api/tags-客户端刚刚从中删除资源的容器。客户端可能希望删除更多资源,因此这将是一个有用的链接。