2009-10-29 43 views
2

我是新来的宁静的概念,要设计一个简单的API为媒体分析服务,我需要建立,执行各种任务,例如脸部分析,区域检测等上传的图像和视频。如何设计一个RESTful API,用于媒体分析引擎

我最初设计的要点如下:

  • 客户员额配置XML文件http://manalysis.com/facerecognition。这会创建一个配置文件,可用于多个分析会话。响应XML包含一个ProfileID来引用此配置文件。客户可以跳过这一步使用默认的配置参数进行分析,以http://manalysis.com/facerecognition
  • 客户端的POST视频数据(与简档作为参数,如果它的设置)。这会创建一个分析会话。返回XML有SessionID
  • 客户可以发送GET来http://manalysis.com/facerecognition/SessionID接收会话的状态。

我在正确的轨道上?具体来说,我有以下问题:

  • 我应该在URL中包括facerecognition? Roy Fielding说,“一个REST API不能定义固定的资源名称或层次结构”这是这个错误的一个实例吗?
  • 的分析结果可以被返回到客户端在一个大的XML文件或当检测到的每个事件。我应该如何告诉分析引擎在哪里返回结果?
  • 通过DELETE调用完成分析后,我应该显式删除配置文件吗?

感谢,

Ç

+0

另外一个问题:如何将一个指定引擎使用视频流的IP地址,而不是在POST文件? – recipriversexclusion 2009-10-29 19:21:34

+0

将URL发布到POST主体中的流式视频或查询字符串中,并允许服务器在视频源上执行HTTP GET。 – 2009-10-29 19:59:54

回答

4

您可以修复的入口点URL,

GET /facerecognition 

<FaceRecognitionService> 
    <Profiles href="/facerecognition/profiles"/> 
    <AnalysisRequests href="/facerecognition/analysisrequests"/> 
</FaceRecognitionService> 

张贴的XML配置文件的URL中的href属性创建一个新的配置文件Profiles元件

POST /facerecognition/profiles 
201 - Created 
Location: /facerecognition/profile/33 

In通过创建新的分析请求来启动分析。我会避免使用术语会话,因为它过于通用并且在REST世界中有很多负面关联。

POST /facerecognition/analysisrequests?profileId=33 
201 - Created 
Location: /facerecognition/analysisrequest/2103 

检查过程

GET /facerecognition/analysisrequest/2103 

<AnalysisRequest> 
    <Status>Processing</Status> 
    <Cancel Method="DELETE" href="/facerecognition/analysisrequest/2103" /> 
</AnalysisRequest> 

当处理已经完成的状态,同样的GET可能会返回

<AnalysisRequest> 
    <Status>Completed</Status> 
    <Results href="/facerecognition/analysisrequest/2103/results" /> 
</AnalysisRequest> 

我所选择的具体网址是比较随意的,你可以使用最清楚的任何东西。