我正在为提供临床数据分析的服务设计REST风格的API。 API允许用户创建患者资源。此资源为服务器端分析提供输入数据。
创建患者既不安全也不是幂等(服务器分配ID)因此使用POST,POST Patients
患者资源可能很大,因此它具有子资源,例如药物,可以更新。更新药物是幂等的,因为整套药物将被替换,因此使用PUT。
通过请求POST /Patients/{patientId}/analysisResults
触发临床分析。或者,用户可以请求在POST /患者请求的响应中返回分析结果;这节省了额外的HTTP往返。
我的问题是这个;用户希望将更新响应(PUT)中包含的分析结果发送到Patient/Medications
- 这是可以理解的,因为他们不希望再次请求检索结果。因此,PUT Patient/Medications
在患者资源方面是幂等的,但在所有资源方面不是幂等的,因为将创建新的分析结果子资源。我应该:
答案 0 :(得分:2)
选项C,如果您希望保持RESTful状态。
选项A和B很可能会削弱REST旨在为您提供的属性,缓存是直接想到的。
如果这是基于HTML的,则响应将包含指向analysisReport资源的链接,以允许用户将应用程序驱动到有用的位置。