繁体   English   中英

单个项目的 API 端点 -- POST 与 PUT

[英]API endpoint for a single item -- POST vs PUT

我们来看看下面的API:

在此处输入图像描述

我总是有点不清楚的一件事是在更新/posts/{id}项目时。 如果帖子包含:

  • ID
  • 标题
  • 作者
  • 发表于
  • 身体

如果我们想清除以前的帖子并用新帖子更新它(即getByID.update(title, author, body)类的东西)——这将通过PUT请求还是POST请求来完成? POST/posts/{id}是否有意义,或者POST本质上意味着它创建一个新条目,而PUT仅通过其 PK 更新现有条目——即, POST就像 SQL 中的INSERTPUT就像UPDATE中的更新。

此外,如果有类似 List 字段的内容怎么办? 例如, /posts/{id}/tags ,其中标签可能类似于programmingc++rest 如果有人在这里执行了delete操作——会删除所有标签,还是只删除一个标签?

POST 仅用于创建。 改用 PATCH 的部分更新,如果其他字段是只读的,则使用 PUT。

理论上,您可以仅使用 GET 和 POST 创建 REST API,但如果有更好的方法可用,那么您应该使用这些方法。

POST:创建一个新事物,其中新事物的位置(ID)将由服务器确定。 响应应该包含一个Location header 告诉客户端 object 结束的位置(POST-redirect-GET 模式)。

PUT:在客户端定义的位置创建新事物(在允许的情况下),或在给定位置替换事物(这包括“更新”,其中客户端发送的主体是object,就像您从 GET 获得的一样)。

PATCH:在给定位置对事物进行就地部分更新。

暂无
暂无

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

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