Javascript 如何有效地在REST中更新复杂的大型对象?
假设我有一个html页面中的复杂对象,它映射到这个JSON结构: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服务,然后验证这个完全记
{
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
- 使用
并将该属性用作url为PUT
/resource/title
(
POST
不是幂等的,所以不应该将其用于更新)为什么需要多个URL?我想,只要一个带有多个参数的URL就足够了。!每个属性的url都是疯狂的。如果我更新2个属性,那是2个调用吗?3个或4个属性如何?是否要排列所有可能的属性URL?其余部分应该是关于展示资源的。你的HTML页面真的呈现了多种资源吗?