哪些HTTP方法与哪些CRUD方法匹配?

在REST风格的编程中,我们应该使用HTTP方法作为构建模块。 尽管哪些方法与经典的CRUD方法相匹配,但我有点困惑。 GET / Read和DELETE / Delete足够明显。

但是,PUT / POST有什么区别? 它们是否与创建和更新一一对应?


Create = PUT with a new URI
         POST to a base URI returning a newly created URI
Read   = GET
Update = PUT with an existing URI
Delete = DELETE

PUT可以映射到Create和Update,这取决于PUT使用的URI的存在。

POST映射到Create。

更正:POST也可以映射到更新,尽管它通常用于创建。 POST也可以是部分更新,因此我们不需要建议的PATCH方法。


整个关键是你是否在做一个幂等变化。 也就是说,如果对消息采取两次行动将导致“相同”的事情在那里,就好像它只做了一次,你就会有一个幂等变化,它应该映射到PUT。 如果不是,则映射到POST。 如果你永远不允许客户端合成URL,PUT与Update很接近,POST可以处理Create就好,但这绝对不是唯一的方法; 如果客户端知道它想要创建/foo/abc并知道要放入哪些内容,它就可以像PUT一样工作。

POST的标准描述是当你承诺购买某些东西的时候:这是一个没有人知道它就不想重复的动作。 相比之下,事先为订单设置调度地址可以使用PUT完成:无论您是否被告知发送到6 Anywhere Dr, Nowhereville一次,两次或一百次都6 Anywhere Dr, Nowhereville :它仍然是相同的地址。 这是否意味着它是一个更新? 可能......这一切都取决于你想如何写后端。 (请注意,结果可能不尽相同:您可以在用户上次执行PUT时向用户报告,作为资源表示形式的一部分,这可以确保重复的PUT不会导致相同的结果,但结果仍然会在功能上是“相同的”。)


我正在寻找相同的答案,这是IBM说的。 IBM Link

POST            Creates a new resource.
GET             Retrieves a resource.
PUT             Updates an existing resource.
DELETE          Deletes a resource.
链接地址: http://www.djcxy.com/p/7085.html

上一篇: Which HTTP methods match up to which CRUD methods?

下一篇: git branch naming best practices