Rest 当某些属性可以更改,而某些属性可以';t基于资源的状态?
考虑到我拥有以下资源:Rest 当某些属性可以更改,而某些属性可以';t基于资源的状态?,rest,Rest,考虑到我拥有以下资源: 公共类Foo { 公共字符串文本{get;set;} 公共整数{get;set;} //由资源本身决定 公共状态状态{get;set;} } 现在,假设我们希望能够更新这些。通常,您可以创建修补程序端点: 补丁api/foos/1,其主体既包含文本又包含提醒天数。(我不使用像Jsonpatch这样的东西,在这里您只能提交更改的属性) 这样行得通。但下面的情况如何: Text在状态为New和Submitted 当状态为“新建”时,提醒天数可以更改 如果我使用我的补丁示
公共类Foo
{
公共字符串文本{get;set;}
公共整数{get;set;}
//由资源本身决定
公共状态状态{get;set;}
}
现在,假设我们希望能够更新这些。通常,您可以创建修补程序端点:
补丁api/foos/1
,其主体既包含文本
又包含提醒天数
。(我不使用像Jsonpatch这样的东西,在这里您只能提交更改的属性)
这样行得通。但下面的情况如何:
在状态为Text
和New
Submitted
- 当状态为“新建”时,
提醒天数可以更改
New
时,我可以使用如下主体,一切都会正常:
{
“文本”:“你好,世界!”,
“三天”:3
}
但是如果我在资源的状态为“已提交”时使用此属性,并且我将“提醒天数”更改为“5”,则资源将抛出一个错误,因为我不再被允许更改该属性。基于此信息,我可以考虑使用一个端点来同时更改这两个端点的唯一方法是,当资源告诉我无法更改属性时,忽略remenderindays
属性
对我来说,这似乎是一个丑陋的解决方案。您需要向API提交无用的数据,这是一种浪费
另一个解决方案是有两个端点:
补丁api/foos/1/text
补丁api/foos/1/d