在RESTful风格的编程中,我们应该使用HTTP方法作为我们的构建块。不过,我有点困惑,哪些方法与经典的CRUD方法相匹配。GET/Read和DELETE/Delete非常明显。
但是,PUT/POST有什么区别呢?它们是否与Create和Update一一匹配?
发布于 2011-06-02 03:38:42
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也可以映射到Update,尽管它通常用于Create。POST也可以是部分更新,因此我们不需要建议的补丁方法。
发布于 2011-06-01 15:23:28
关键是你是否在做一个幂等的改变。也就是说,如果对消息采取两次操作会导致“相同”的事情出现,就好像只做了一次一样,那么你就得到了一个幂等变化,它应该映射到PUT。如果不是,则映射到POST。如果您从不允许客户端合成/foo/abc
,PUT非常接近更新,POST可以很好地处理创建,但这肯定不是唯一的方法;如果客户端知道它想要创建URL并知道要放什么内容,它就可以作为PUT工作。
对帖子的规范描述是当你承诺购买某物时:这是一个没有人想要在不知情的情况下重复的行为。相比之下,预先设置订单的发送地址可以通过PUT来完成:无论您被告知发送到6 Anywhere Dr, Nowhereville
一次、两次还是一百次:它仍然是相同的地址。这是不是意味着这是一个更新?可能是…这完全取决于您想要如何编写后端。(请注意,结果可能并不相同:您可以将用户上次执行PUT的时间作为资源表示的一部分返回给用户,这将确保重复的PUT不会导致相同的结果,但结果在函数意义上仍然是“相同的”。)
发布于 2013-11-01 13:47:11
我也在寻找同样的答案,这是IBM所说的。IBM Link
POST创建一个新资源。GET检索资源。PUT更新现有资源。DELETE删除资源。
https://stackoverflow.com/questions/6203231
复制相似问题