Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services RESTWeb服务中的操作处理_Web Services_Rest_Architecture - Fatal编程技术网

Web services RESTWeb服务中的操作处理

Web services RESTWeb服务中的操作处理,web-services,rest,architecture,Web Services,Rest,Architecture,我有一个web应用程序,用户可以上传可以由后端处理的样本。每个示例可以有一个或多个不同类型的文件。一旦上传了有关样本的信息,用户可以要求立即或稍后对样本进行分析(在某些情况下,分析可能需要数小时)。后端基于REST服务 如何告诉后端启动分析?REST原则之一是URL应该基于名词 所以我不能用 /startAnalysis?sampleId=55&startTime=now 取消分析怎么样 /cancelAnalysis?sampleId=57 我认为您提到的REST原则实际上只用于G

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

如何告诉后端启动分析?REST原则之一是URL应该基于名词

所以我不能用

/startAnalysis?sampleId=55&startTime=now
取消分析怎么样

/cancelAnalysis?sampleId=57

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

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

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

`/convert?from=EUR&to=CNY&amount=100`
因此,您的REST操作
startAnalysis
cancelAnalysis
是有效的

我建议您阅读(免费电子书),这是一本关于RESTAPI设计的简短介绍。它还包括休息动作

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

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

  • 拥有样本资源:/Sample
  • 拥有分析资源:/Analysis
  • 使用POST或PUT创建样本资源后,可以通过POST在创建的样本资源上创建分析资源:/Sample/1234/Analysis
  • 为了开始样本分析(您甚至可以发布关于何时开始分析的信息)
  • 如果要取消样本分析,则可以删除以前创建的分析资源:/sample/1234/analysis/abcde