假设我有一个来自html页面的复杂对象,它被映射到这个JSON结构:
{
id:"", //is not shown to user
title : "",
description: "",
summary: "",
// other too many fields
}
要使用“常见”REST方法更新此记录,我应该使用:
- POST rest/record/{id}
使用“通用”方法将完全记录对象编组到JSON对象并传递给REST服务,然后验证此完全对象,将SQL查询传递给数据base和DB引擎使用所有数据更新记录。但是如果用户只更新标题中的一个符号呢?
在这种情况下,我应该将这个对象分成几个:
{
id:"", //is not shown to user
{ recordId:"", title : "", } ,
{ recordId:"", description: "", } ,
{ recordId:"", summary: "", } ,
// other too many fields
}
我应该如何重新组织其他网址?像那样:
- POST rest/record/{id}/title
- POST rest/record/{id}/description
- POST rest/record/{id}/summary
- others
这种方法的URL是好还是坏(我的意思是来自endScript和REST后端编程的javaScript)?还有其他方法可以解决这个问题吗?
答案 0 :(得分:0)
不使用POST,而是使用PATCH并仅发送已更改的内容:
PATCH rest/record/{id}
Data: { title: "new title" }
诸如rest / record / {id} / title,rest / record / {id} / summary等网址并不是真正的RESTfull,因为它们不是资源,而是资源的属性。
答案 1 :(得分:0)
请参阅此过去的问题,了解此处的选项(包括PATCH)。
答案 2 :(得分:0)
您有以下选择:
PATCH
并仅发送title
PUT
并再次发送整个数据PUT
并使用该属性作为子资源,使用网址:/resource/title
(POST
不是幂等的,所以你不应该使用它进行更新)