我正在为提供临床数据分析的服务设计一个 REST 风格的 API。API 允许用户创建患者资源。此资源为服务器端分析提供输入数据。
创建 Patient 既不安全也不幂等(服务器分配 ID),因此使用 POST, POST Patients
患者资源可能很大,因此它具有可以更新的子资源,例如药物。更新 Medications 是幂等的,因为整个 med 集都将被替换,因此使用 PUT。
临床分析由请求触发 POST /Patients/{patientId}/analysisResults
。或者,用户可以请求在 POST /Patients 请求的响应中返回分析结果;这节省了额外的 HTTP 往返。
我的问题是这个;用户希望将分析结果包含在对更新 (PUT) 的响应中Patient/Medications
- 这是可以理解的,因为他们不想再次请求检索结果。因此PUT Patient/Medications
,对于 Patient 资源而言将是幂等的,但对于所有资源而言不是幂等的,因为将创建新的 analysisResults 子资源。我是不是该:
- a) 使用 PUT 启用此功能。
- b) 使用 POST 启用此功能。
- c) 坚持需要单独调用来创建新的 analysisResults,即使这会增加最终用户的整体响应时间?