要放或发布?

可能重复:
在REST中放置与POST

我知道这个问题已经讨论了很多,虽然我很满意,但我并没有完全明白。 我想如果有人能够回答这个与下面的例子有关的话,它会让人很容易理解。

创建新用户 - 将新用户添加到发送用户名,密码,电子邮件的数据库。 PUT还是POST?

我想可能是PUT,因为我不想有重复的用户,PUT就像删除和替换一样。 但是,我有检查,避免用户被添加两次,所以也许我应该使用POST?

更新用户 - 更改电子邮件或密码。 PUT还是POST?

我可以使用URI api / update / my_username,然后通过主体发送新邮件,所以这应该是PUT? 我也可以将它全部发送到URI中,例如api/update/my_username/email/new_email@email.com


创建 - POST,更新 - PUT,删除 - 删除。

为了更好地理解HTTP动词的用法,请看RFC http://tools.ietf.org/html/rfc2616

PUT请求也可以创建实体,但是应该创建201响应代码,而不是200 OK和204 No Content。 但是,这取决于您是否允许/实施此类行为。


关键指导是操作是否是幂等的,即如果重复它会发生什么。 如果总体上发生同样的事情(忽略日志,上次更改时间和其他快捷方式),无论您执行一次,两次还是二十次请求,它都是幂等的,应该是PUT。 如果重要的次数使用POST。

创建通常是非幂等的,因为您通常会向用户发出一个ID,但它不必像那样(例如,如果调用者指定了ID)。 更新通常是幂等的,因为在实践中将数据字段更改为其当前值通常是有效的无操作。

链接地址: http://www.djcxy.com/p/7009.html

上一篇: To PUT or to POST?

下一篇: RESTful API: What should a collection URL return?