REST API - 要PUT还是POST?

时间:2012-07-19 10:00:17

标签: rest

  

可能重复:
  PUT vs POST in REST

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

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

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

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

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

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:2)

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

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