HTTP Methods (5)

HTTP Headers (1)

Miscellaneous (3)

Resources (4)

Basics (5)

Mediatypes (1)

我们应该何时选用 PUT 或者 POST?

HTTP 的 [POST] 和 [PUT] 并不等价于 CRUD 中的创建(C)和更新(U)。他们服务于不同的目标,只不过在某种情况下可能也可以, 甚至推荐使 [POST] 来创建资源或者使用 [PUT] 来更新资源。

当你可以通过一个特定资源来对其做完整更新,使用 [PUT]。举个例子,当你知道一个文章存在 http://example.org/article/1234, 你可以使用 [PUT] 来直接更新这篇文章的内容。

当你不能确实一个资源的具体公交车,如当你需要创建一篇新文章,但不知道它会存在什么地方,你可以 [POST] 这篇文章到一个 URL,并让服务器决定 它的真正 URL。

PUT /article/1234 HTTP/1.1
<article>
    <title>red stapler</title>
    <price currency="eur">12.50</price>
</article>
POST /articles HTTP/1.1
<article>
    <title>blue stapler</title>
    <price currency="eur">7.50</price>
</article>

HTTP/1.1 201 Created
Location: /articles/63636

当知道新资源的地址,你可能使用 [PUT] 来更新 《blue stapler》这篇文章。但像前面说过的:你也可以通过 [PUT] 来生新一个新资源。下面这个例子, 当 API 提供这个功能,它是完美且合规的:

PUT /articles/green-stapler HTTP/1.1
<article>
    <title>green stapler</title>
    <price currency="eur">9.95</price>
</article>

HTTP/1.1 201 Created
Location: /articles/green-stapler

在这里,客户端决定了文章的 URL(注,它们之间不同的是,[PUT] 由前端决定 URL,而 [POST] 由后端决定 URL)。

注意:

另请参见

http
Copyright 2012 Joshua Thijssen and others. Like to contribute? Add your recipe to our github repository.
Looking for Puppet recipies? Try the Puppet CookBook.
Fork me on GitHub