【问题标题】:REST API for multiple actions on a fileREST API 用于对文件执行多项操作
【发布时间】:2010-12-17 04:26:31
【问题描述】:

这是我的question 的继续,关于如何为媒体分析服务器设计 REST API。根据 Derrel 的回答,在我当前的设计中,我使用 POST /facerecognition/analysisrequests?profileId=33 开始分析媒体文件,它指定应该使用配置文件 ID 33(之前由另一个 POST 在服务器上创建)。

我有两个简短的问题:

  1. 如何扩展此方法以在同一个文件上拥有多个分析请求,例如对给定文件执行人脸识别、文本检测和广告检测?正在使用二进制编码(例如,每个位都表示分析),例如POST http:[server URL]/00000011/analysisrequests?profileId=33 是个好主意吗?
  2. 使用服务器端数据库(例如 mySQL)是跟踪所有配置文件和进程 ID 的最佳方式吗?

谢谢,

C

【问题讨论】:

  • 对 (1) 的一个简单解决方案是从配置文件中推断要执行的任务。那么,POST [server URL]/analysis/profileId=33 就足够了。这样做的缺点是任务信息不会丢失在 URL 中。这对负载平衡器来说会是个大问题吗?

标签: api rest


【解决方案1】:

我会将请求的分析类型作为参数,而不是作为路径的一部分。它们可以是请求正文中的 POST 参数,或者在 URL 列表 profileId 中指定。示例:POST http://server/analysisrequest?profileId=33&analysisType=faceRecognition&analysisType=textDetection。为一个参数提交多个值是完全可以的。

您可以提交分析类型的二进制编码,但将其拼写出来更加清晰和自记录。添加新的分析类型时,二进制编码也有点脆弱;添加一个新数字会影响所有请求的 url,即使是那些不使用新类型的请求。

服务器端数据库是此类 Web 应用程序的典型代表,它可能是一个很好的解决方案。您可能还需要考虑使用进程内 SQL 数据库解决方案,例如 sqlitederby,以避免单独数据库进程的复杂性。

【讨论】:

    【解决方案2】:

    我建议更完整地使用HTTP POST。针对同一 URI 发出所有 POST 请求:/analysisrequest。使用application/x-www-form-urlencoded发送参数。

    所以:

    主机:yourserver.com 接受: */* 内容长度:73 内容类型:application/x-www-form-urlencoded face_recognition=true&text_detection=true&ad_detection=true&profile_id=33

    multipart/form-data 还允许您在与对文件执行的操作相同的请求中发送正在分析的文件,假设这是所需的场景。额外的好处是您应该能够为 HTML 表单和您的 REST API 使用完全相同的 API 端点。

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2021-07-25
      • 2014-04-16
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多