0

我正在为提供临床数据分析的服务设计一个 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,即使这会增加最终用户的整体响应时间?
4

1 回答 1

2

如果您希望保持 RESTful,请选择 C。

选项 A 和 B 很可能会削弱 REST 旨在为您提供的属性,缓存是直接想到的。

如果这是基于 HTML 的,则响应将包含一个指向 analysisReport 资源的链接,以允许用户将应用程序驱动到有用的地方。

于 2012-10-19T07:34:56.640 回答