我应该使用PUT来创建具有已知id的资源(例如:email)

时间:2015-03-27 15:45:38

标签: rest

我相信前段时间已经读过,在知道id时创建资源(例如:email)应该使用该资源上的PUT来完成。

例如为: PUT /user/chris@example.com

这是正确的吗?

3 个答案:

答案 0 :(得分:3)

是的,使用

是正确的
PUT resource/{id} --> 204 No Content

当客户端指定资源的id且操作是幂等的时。如果连续两次或多次执行该操作具有与执行一次相同的效果,则该操作是幂等的。

如果您使用POST,通常不提供客户端标识符。相反,服务器选择自己的标识符,并通过发送带有201 Created标题的Location响应来通知客户端创建的资源位置。

POST resource     --> 201 Created
                      Location: /resource/7

答案 1 :(得分:1)

是的,使用PUT创建具有已知URI的资源是正确的。 PUT要求服务器将目标URI上的资源替换为有效负载中的资源表示,因此您必须知道目标URI。但请注意,PUT需要完整的表示形式,因此,如果您要创建或更新表示不完整的资源,则应使用POST

答案 2 :(得分:0)

我认为更正确的做法是通过POST在新网址上进行操作,并创建如果该ID不存在。 因为PUT方法是幂等的(例如,如果你多次发送一个请求 - 结果会相同)。