fvi*_*cot 9 spring spring-boot spring-rest
我正在使用SpringBoot和Spring REST.我想了解HTTP PATCH方法来更新我的Model的属性
是否有任何好的教程解释如何使其工作?
Nox*_*Nox 11
我注意到许多提供的答案都是 JSON 修补或不完整的答案。下面是一个完整的解释和例子,说明你需要使用真实世界的代码
首先,PATCH 是一个选择性的 PUT。您可以使用它来更新对象或对象列表的任意数量的字段。在 PUT 中,您通常会发送带有任何更新的整个对象。
补丁/对象/7
{
"objId":7,
"objName": "New name"
}
Run Code Online (Sandbox Code Playgroud)
放置/对象/7
{
"objId":7,
"objName": "New name",
"objectUpdates": true,
"objectStatus": "ongoing",
"scoring": null,
"objectChildren":[
{
"childId": 1
},
............
}
Run Code Online (Sandbox Code Playgroud)
这允许您在没有大量端点的情况下更新记录。例如,在上面,要更新评分,您需要 object/{id}/scoring,然后要更新 name,您需要 object/{id}/name。每个项目都有一个端点,或者您需要前端为每次更新发布整个对象。如果您有一个巨大的对象,这可能会占用大量的网络时间或不必要的移动数据。该补丁可让您拥有 1 个端点,其中包含移动平台应使用的最小对象属性发送。
这是补丁在现实世界中的使用示例:
{
"objId":7,
"objName": "New name"
}
Run Code Online (Sandbox Code Playgroud)
上述内容可能会让某些人感到困惑,因为新的开发人员通常不会像这样处理反射。基本上,无论您在正文中传递这个函数,它都会使用给定的 ID 找到关联的声明,然后只更新您作为键值对传递的字段。
示例体:
补丁/索赔/7
{
"claimId":7,
"claimTypeId": 1,
"claimStatus": null
}
Run Code Online (Sandbox Code Playgroud)
以上将更新 claimTypeId 和 claimStatus 为声明 7 的给定值,保持所有其他值不变。
所以回报将是这样的:
{
"claimId": 7,
"claimSrcAcctId": 12345678,
"claimTypeId": 1,
"claimDescription": "The vehicle is damaged beyond repair",
"claimDateSubmitted": "2019-01-11 17:43:43",
"claimStatus": null,
"claimDateUpdated": "2019-04-09 13:43:07",
"claimAcctAddress": "123 Sesame St, Charlotte, NC 28282",
"claimContactName": "Steve Smith",
"claimContactPhone": "777-555-1111",
"claimContactEmail": "steve.smith@domain.com",
"claimWitness": true,
"claimWitnessFirstName": "Stan",
"claimWitnessLastName": "Smith",
"claimWitnessPhone": "777-777-7777",
"claimDate": "2019-01-11 17:43:43",
"claimDateEnd": "2019-01-11 12:43:43",
"claimInvestigation": null,
"scoring": null
}
Run Code Online (Sandbox Code Playgroud)
如您所见,完整对象将返回,而不会更改您想要更改的任何数据。我知道这里的解释有一些重复,我只是想清楚地概述一下。
PATCH就 Spring 而言,方法与PUT和没有本质上的不同POST。挑战在于您在 PATCH 请求中传递的内容以及如何在控制器中映射数据。如果您使用 映射到值 bean @RequestBody,则必须弄清楚实际设置的内容以及 null 值的含义。其他选项是将PATCH请求限制为一个属性并在 url 中指定它或将值映射到Map. 另请参见Spring MVC PATCH 方法:部分更新
| 归档时间: |
|
| 查看次数: |
15233 次 |
| 最近记录: |