繁体   English   中英

我应该使用发布或放置来编辑数据库中的人员,又应该使用哪个添加新人员?

[英]Should I use Post or Put to edit a person in a database and which should I use to add a new person?

所以这是现在的方法:

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的人员。

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

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

例:

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

PUT-服务器将收到一个旨在创建或替换资源的实体(例如,具有ID)。 如果资源已经存在,则将其替换为请求中的资源,否则将创建一个新资源。 在所有情况下,某些东西都会保留在服务器上。 必须提供一种唯一标识实体的方法。 换句话说,客户端是创建ID的客户端,因为如果需要创建实体,则将使用该ID。 我认识的大多数人都为这个现实而挣扎。

例:

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

一般约定通常为:

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

我可以看到的区别是您还使用了不同的URI,最常用的是单个资源URI。 但是,无论如何这值得商de,这取决于您的喜好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM