关于REST API:REST API – 要PUT还是POST?

REST API - To PUT or to POST?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
PUT vs POST in REST

我知道这已经讨论了很多,虽然我有点理解,但我并没有完全理解。 我想如果有人可以通过以下示例回答这个问题,那么这将使其易于理解。

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

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

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

我可以使用URI api / update / my_username,然后通过正文发送新的电子邮件,那么这应该是PUT吗? 我也可以在URI中发送所有内容,例如api/update/my_username/email/[email protected]


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

为了更好地理解HTTP Verbs的使用,请查看RFC
http://tools.ietf.org/html/rfc2616

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


关键指南是操作是否是幂等的,即如果重复操作会发生什么。 如果整体发生相同的事情(忽略日志,上次更改时间和其他fripperies),无论您执行一次,两次还是20次请求,它都是幂等的,应该是PUT。 如果您执行此操作的次数很重要,请使用POST。

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