4

我有一个 Web 应用程序,用户可以在其中上传可由后端处理的样本。每个样本可以有一个或多个不同类型的文件。上传有关样本的信息后,用户可以请求立即或稍后分析样本(在某些情况下,分析可能需要数小时)。后端基于 REST 服务。

我如何告诉后端开始分析?URL 应该基于名词的 REST 原则之一。

所以我不能使用

/startAnalysis?sampleId=55&startTime=now

取消分析怎么办?

/cancelAnalysis?sampleId=57
4

2 回答 2

7

理论:

实际上,您被“允许”使用 API 调用来发送不是资源的响应,它们被称为操作,在处理 REST操作时,您必须使用动词而不是名词。

例如,将 100 欧元转换为日元的 REST API:

`/convert?from=EUR&to=CNY&amount=100`

startAnalysis因此,您的 REST 操作cancelAnalysis是有效的。

我建议您阅读apigee的Web API Design(免费电子书),这是对 REST API 设计的简短介绍。它还涵盖了 REST操作

实践:

您还可以想象“分析开始”是分析资源状态的一部分。您可以使用 PATCH 或 PUT 来更新分析资源的状态,而不是使用操作。

更详细的解决方案可能是:

  1. 有一个示例资源:/sample
  2. 有一个分析资源:/analysis
  3. 使用 POST 或 PUT创建Sample资源后,您可以通过 POST在已创建的Sample资源上创建Analysis资源:/sample/1234/analysis
  4. 为了开始样品分析(您甚至可以发布有关何时开始分析的信息)。
  5. 如果您想取消样本分析,您可以删除之前创建的分析资源:/sample/1234/analysis/abcde
于 2013-05-16T10:15:45.733 回答
0

我认为您提到的 REST 原则实际上仅用于 GET uris。GET uris 应该是名词,因为您只是在请求资源,可能带有参数。对于 PUT 或 POST uri,它们应该是动词,因为它们会导致状态变化。

于 2013-05-15T18:01:07.873 回答