java - 应该使用哪种休息方法来创建孩子
问题描述
在我的代码中,实体之间存在父子关系。现在我必须编写 Rest API 来创建一个孩子。
我对 POST 和 PUT 方法感到困惑。如果我要查看 master ,它就像 master 中的更新,所以我必须使用 PUT 方法。如果我要研究孩子,那就像是创造了一个新孩子。
代码:
@PostMapping("/master/{masterId}/child/{childId}")
public ResponseEntity<Void> insertChildDetail(
我正在使用 POST 方法,但我不确定。
您能否让我知道哪种方法更好用以及为什么这样我可以更好地理解。
解决方案
POST
和方法都PUT
可以用来创建资源。如果您的应用程序代表客户端生成资源标识符,那么您应该使用POST
而不是PUT
创建资源。
为了支持它,我在PUT
下面引用了方法定义的某些部分(突出显示是我的):
该
PUT
方法请求目标资源的状态被创建或替换为请求消息有效负载中包含的表示定义的状态。[...]如果目标资源没有当前的表示并且
PUT
成功地创建了一个,那么源服务器必须通过发送一个201
(创建的)响应来通知用户代理。如果目标资源确实有当前表示并且该表示已根据封闭表示的状态成功修改,则源服务器必须发送200
(OK)或204
(No Content)响应以指示请求成功完成. [...]对请求的正确解释
PUT
假定用户代理知道需要哪个目标资源。 代表客户端选择适当 URI 的服务,在接收到状态更改请求后,应该使用POST
方法而不是PUT
. [...]
POST
现在,在下面找到有关方法定义的一些相关引用:
该
POST
方法请求目标资源根据资源自身的特定语义处理请求中包含的表示。例如,POST
用于以下功能(其中包括):[...]
- 创建尚未被源服务器识别的新资源;
[...]
如果由于成功处理
POST
请求而在源服务器上创建了一个或多个资源,则源服务器应该发送一个201
(已创建)响应,其中包含一个Location
头字段,该字段提供创建的主要资源的标识符和描述引用新资源时请求的状态。
201
状态码表示已创建新资源,而标Location
头指示新创建的资源所在的位置。如果没有Location
提供标头,则客户端应假定资源由有效请求 URI 标识:
(
201
Created) 状态码表示请求已完成,并导致创建一个或多个新资源。请求创建的主要资源由Location
响应中的标头字段标识,如果未Location
收到任何字段,则由有效请求 URI 标识。[...]
推荐阅读
- javascript - 渲染屏幕很困难
- mysql - PGLOADER 没有数据导入 - 没有错误(mysql 到 postgres 迁移)
- java - MySupportMapFragment 不根据谷歌地图 Android 显示位置名称
- mysql - 有没有办法使用 MySQL 触发器复制表中的记录,但在插入之前修改数据?
- r - 使用 0 和 0.00% 值提取 Dataframe 中的所有行
- android - 独立于其他活动运行 android 应用程序特定活动
- eclipse - 如何更改 Eclipse 的“Packages”选项卡的背景颜色
- javascript - 如何在 laravel 中管理不同刀片上的计数器?
- python - 函数回调时覆盖列表
- php - 在 FPDF 中设置 While 循环