例如,如果我们(作为客户端应用程序)检索具有一个联系人阵列的患者,现在我们向fhir服务器发送PATCH请求以修改某些联系人的某些信息...我们看到的唯一方法表明它正在使用该职位。示例:Patient.contact [1] .gender。这只是一个例子。
我认为这种方法(使用数组位置)并不安全,因为服务不是有状态的,而且,并不总是服务器为同一个数组返回相同的顺序(假设我们正在恢复订购的联系人列表没有意义)所以服务器可以改变错误的联系方式(在这种情况下,如果我们使用临床资源,则更危险/不安全)。
我错了?还有一种更安全的方法是使用PATCH而不会影响性能吗?
答案 0 :(得分:1)
对于JSON补丁,您可以使用"测试"如果您在数组中有一个可以依赖的值,则进行操作。如果测试失败,则需要整个补丁操作失败:http://jsonpatch.com/#test
对于XML补丁,我相信你可以用选择器做类似的事情吗? https://tools.ietf.org/html/rfc5261#section-4.1 - 再次,这取决于您尝试更新的内容。
我也同意其他人的意见,如果版本匹配,你应该只尝试修补。应以盲版方式对临床数据进行的更新很少。
答案 1 :(得分:0)
服务器假设以保留订单。并非所有服务器都会,但服务器可能无法支持PATCH。如果您愿意,请随时提交更改请求,我们可以在规范中强调这一点。
答案 2 :(得分:0)
非常感谢您的澄清。当然,我们将要求进行更改,至少在文档中要求提高此要求(服务器必须保留订单)。
但你对“订单”的确是什么意思?例如,同时appclient1通过3个联系人(Andrew,Bob,Dukhan)对患者进行了回复并发送[2](Dukhan)的补丁,但在此期间,任何其他系统(appclient2)都添加了新的联系人(Carl)。现在列表(在服务器端)将是Andrew(0),Bob(1),Carl(2)和Dukhan(3)....所以当从初始appclient1在服务器上收到PATCH请求dukhan时位置[2]刚才不是杜汉,是卡尔。所以我们继续处于同样的不安全状况。