我应该使用Post或Put来编辑数据库中的某个人,以及我应该使用哪个人来添加新人?

时间:2012-06-18 17:59:59

标签: database api rest post put

所以这就是现在的方法:

POST person/personId/edit
https://api.example.com/*key*/person/*personId*/edit?FName=Blah

我希望这能将personId的第一个名字改为Blah。

如果我需要添加一个人,我说:

PUT person/create
https://api.example.com/*key*/person/create

它将添加一个具有新personId的人。

2 个答案:

答案 0 :(得分:2)

一般惯例通常是:

GET    => READ
POST   => CREATE
DELETE => DELETE
PUT    => UPDATE

我可以看到的一个区别是你也在使用不同的URI,最常用的是单个资源URI。但是,无论如何这是有争议的,所以这是你喜欢它的问题。

答案 1 :(得分:2)

我对POST和PUT的解释一直是:

POST - 服务器将收到一个可用于执行操作或创建资源的实体。如果端点的意图是创建资源,则POST将始终创建新资源。在任何情况下,每个POST都将被处理,而不考虑资源的状态。您只需将信息发布到服务器即可进行操作。

示例:

  • 想象一下将向用户的手机发送消息的Web服务。 POST可用于向服务器提供可能不适合GET的必要信息。请求有效负载将包含此信息。服务器上没有创建资源,因此操作返回200 OK,表示操作已成功完成。响应还可以包括包含来自服务器操作的信息的正文。
  • 想象一下,一个Web服务会创建一个张贴在公告板上的票证。 POST可以包含发布该帖子所需的信息。信息保留在服务器上并返回201 Created(可能是一个包含用户ID的响应主体,或者是由创建产生的更完整的对象)。在所有情况下,当某些内容张贴到此端点时,会创建一个新票证。

PUT - 服务器将接收一个实体(例如,带有ID),目的是创建或替换资源。如果资源已存在,则将替换为请求中的资源,否则将创建新资源。在所有情况下,服务器上都会保留一些内容。必须提供一些唯一标识实体的方法。换句话说,客户端是创建ID的客户端,因为如果需要创建实体,它将被使用。我认识的大多数人都在为这个现实而斗争。

示例:

  • Web服务从包含用户的客户端接收有效负载 信息。期望是用户将被保存。该 服务器将检查该用户是否存在。如果确实如此,那就会 通过将其替换为提供的新资源来更新该用户 请求并返回200 OK或204 No Content。如果没有 存在,它将创建它并返回201 Created。