Json 如何从PUT请求更新嵌套数据
假设我们有一张在RDBMS中以草稿状态保存的发票。发票有三个行项目。rest客户端获取发票,并修改行项目 获取/发票/123Json 如何从PUT请求更新嵌套数据,json,rest,Json,Rest,假设我们有一张在RDBMS中以草稿状态保存的发票。发票有三个行项目。rest客户端获取发票,并修改行项目 获取/发票/123 { "InvoiceId" : "123", "lineitems": [ { "id":"A", "qty":"5"}, { "id":"B", "qty":"5"}, ] } 假设用户修改发票如下:; 更改项目A的数量 删除项目B。 添加新项目C 结果是: { "InvoiceId" : "12
{
"InvoiceId" : "123",
"lineitems":
[
{ "id":"A", "qty":"5"},
{ "id":"B", "qty":"5"},
]
}
假设用户修改发票如下:;
更改项目A的数量
删除项目B。
添加新项目C
结果是:
{
"InvoiceId" : "123",
"lineitems":
[
{ "id":"A", "qty":"10"},
{ "id":"D", "qty":"5"},
]
}
净变化是删除了一行,更新了一行,添加了一行
然后,用户保存发票草稿,这将导致PUT请求
出售/发票/123
{
"InvoiceId" : "123",
"lineitems":
[
{ "id":"A", "qty":"5"},
{ "id":"B", "qty":"5"},
]
}
更新服务器上的行项目的最佳策略是什么
请记住,删除所有行项目并从头开始创建它们将丢失这些行上的所有元数据(创建人、创建日期、上次修改人…)
谢谢
PUT方法请求将封闭的实体存储在提供的请求URI下
将PUT
视为替换。如果资源被接受,PUT
请求中的资源状态应该是资源的结果状态
如果要添加/删除/更新特定元素,则应使用
PATCH
使用子资源进行建模,这是另一种方法,允许直接更新已更改的位。