哪些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