2012-01-01 85 views

回答

8

通常,您将使用一种或两种方法,具体取决于您是否希望客户端(以及用户)定义URI。如果客户端POST到resources/那么服务器可以确定资源的URI。如果客户端PUT到resources/{id}/那么客户端正在确定资源的URI。

一个例外是,如果创建包括链接,状态和未再适当考虑资源的其他物品 - 你通常不能把这些额外的“构造ARGS”如果你愿意,因为它们不是的一部分资源状态。相反,您必须在这种情况下发布POST。

即使您使用POST进行创建,您仍然可能想要公开PUT进行更新。这取决于资源。

如果你不允许PUT创建,那么是的,你应该在这种情况下返回404。

+0

我很困惑。为什么要PUT更新?你需要整个资源来使用PUT来更新它​​,对吗?再次保存所有资源是无效的(它可能有很多数据)。它可能对资源/ {id}/{field}有意义,但是POST会做什么?我知道按照惯例POST更新和PUT取代(因此,如果资源是空的,它创建一个)。 – 2012-01-01 20:54:14

+0

是的,您将需要使用PUT更新整个资源。它可能看起来效率不高,但它是使用REST架构风格扩展到大型部署的应用程序的关键部分。您必须平衡资源的大小,或者改为使用PATCH方法。 PUT取而代之 - 遵循规范,而不仅仅是约定。 POST执行“其他任何事情”,并且经常用于更新。 – fumanchu 2012-01-01 21:48:21

+0

我仍然不明白为什么我应该允许PUT,如果POST可以用来更新资源。 – 2012-01-02 08:10:36