如何从PUT请求更新嵌套数据

时间:2012-03-21 19:27:02

标签: json rest

假设我们有一个在RDBMS中以草稿状态保存的Invoice。发票有三个订单项。休息客户端获取发票,并修改订单项。

GET / invoice / 123

{
    "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请求。

PUT / invoice / 123

更新服务器上的订单项的最佳策略是什么?

请注意,删除所有订单项并从头开始创建它们将会丢失这些行上的任何元数据(创建者,创建日期,最后修改者为......)

谢谢,

1 个答案:

答案 0 :(得分:0)

  

PUT方法请求将所包含的实体存储在提供的Request-URI下。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

PUT视为替换。 PUT请求中的资源状态应该是资源的结果状态(如果被接受)。

如果您想添加/删除/更新特定元素,请使用PATCH

进行查看