我有一个 Web 应用程序,用户可以在其中上传可由后端处理的样本。每个样本可以有一个或多个不同类型的文件。上传有关样本的信息后,用户可以请求立即或稍后分析样本(在某些情况下,分析可能需要数小时)。后端基于 REST 服务。
我如何告诉后端开始分析?URL 应该基于名词的 REST 原则之一。
所以我不能使用
/startAnalysis?sampleId=55&startTime=now
取消分析怎么办?
/cancelAnalysis?sampleId=57
我有一个 Web 应用程序,用户可以在其中上传可由后端处理的样本。每个样本可以有一个或多个不同类型的文件。上传有关样本的信息后,用户可以请求立即或稍后分析样本(在某些情况下,分析可能需要数小时)。后端基于 REST 服务。
我如何告诉后端开始分析?URL 应该基于名词的 REST 原则之一。
所以我不能使用
/startAnalysis?sampleId=55&startTime=now
取消分析怎么办?
/cancelAnalysis?sampleId=57
实际上,您被“允许”使用 API 调用来发送不是资源的响应,它们被称为操作,在处理 REST操作时,您必须使用动词而不是名词。
例如,将 100 欧元转换为日元的 REST API:
`/convert?from=EUR&to=CNY&amount=100`
startAnalysis
因此,您的 REST 操作cancelAnalysis
是有效的。
我建议您阅读apigee的Web API Design(免费电子书),这是对 REST API 设计的简短介绍。它还涵盖了 REST操作。
您还可以想象“分析开始”是分析资源状态的一部分。您可以使用 PATCH 或 PUT 来更新分析资源的状态,而不是使用操作。
更详细的解决方案可能是:
我认为您提到的 REST 原则实际上仅用于 GET uris。GET uris 应该是名词,因为您只是在请求资源,可能带有参数。对于 PUT 或 POST uri,它们应该是动词,因为它们会导致状态变化。