Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 当某些属性可以更改,而某些属性可以';t基于资源的状态?_Rest - Fatal编程技术网

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
这不是真正的宁静,但可以解决我的问题

有人有其他想法吗?正确的做法是什么:)