Javascript 如何有效地在REST中更新复杂的大型对象?

Javascript 如何有效地在REST中更新复杂的大型对象?,javascript,html,json,rest,optimization,Javascript,Html,Json,Rest,Optimization,假设我有一个html页面中的复杂对象,它映射到这个JSON结构: { id:"", //is not shown to user title : "", description: "", summary: "", // other too many fields } 要使用“通用”REST方法更新此记录,我应使用: - POST rest/record/{id} 使用“公共”方法,完全记录对象被编组为JSON对象并传递给REST服务,然后验证这个完全记

假设我有一个html页面中的复杂对象,它映射到这个JSON结构:

{
    id:"", //is not shown to user
    title : "",
    description: "",
    summary: "",
    // other too many fields
}
要使用“通用”REST方法更新此记录,我应使用:

- POST rest/record/{id}
使用“公共”方法,完全记录对象被编组为JSON对象并传递给REST服务,然后验证这个完全记录对象,传递给SQL查询数据库,DB引擎用所有数据更新记录。但如果用户只更新标题中的一个符号怎么办

在这种情况下,我应该将此对象拆分为几个:

{
    id:"", //is not shown to user
    { recordId:"", title : "",         } ,
    { recordId:"", description: "",    } ,
    { recordId:"", summary: "",        } ,
    // other too many fields
}
我应该如何重新组织RESTURL?就像这样:

- POST rest/record/{id}/title
- POST rest/record/{id}/description
- POST rest/record/{id}/summary
- others

使用URL的这种方法是好还是坏(我指的是从后端编程的javaScript和REST后端编程)?是否有其他方法来处理此问题?

请使用修补程序,而不是使用POST,只发送已更改的内容:

PATCH rest/record/{id}

Data: { title: "new title" }

诸如rest/record/{id}/title、rest/record/{id}/summary等URL并不是真正的RESTfull,因为它们不是资源,而是资源的属性。

请参阅过去的问题,了解这里的一些选项探索(包括补丁)


您有以下选项:

  • 使用
    补丁
    并仅发送
    标题
  • 使用
    PUT
    并再次发送整个数据
  • 使用
    PUT
    并将该属性用作url为
    /resource/title

POST
不是幂等的,所以不应该将其用于更新)

为什么需要多个URL?我想,只要一个带有多个参数的URL就足够了。!每个属性的url都是疯狂的。如果我更新2个属性,那是2个调用吗?3个或4个属性如何?是否要排列所有可能的属性URL?其余部分应该是关于展示资源的。你的HTML页面真的呈现了多种资源吗?