这是关于如何为媒体分析服务器设计REST API的question的延续。根据Derrel的回答,在我目前的设计中,我使用POST /facerecognition/analysisrequests?profileId=33
开始分析媒体文件,该文件指定应使用配置文件ID 33(之前在服务器上由另一个POST创建)。
我有两个简短的问题:
POST http:[server URL]/00000011/analysisrequests?profileId=33
一个好主意?谢谢,
C
答案 0 :(得分:2)
我将请求的分析类型作为参数,而不是作为路径的一部分。它们可以是请求正文中的POST参数,也可以在URL列表profileId中指定。示例:POST http://server/analysisrequest?profileId=33&analysisType=faceRecognition&analysisType=textDetection
。为参数提交多个值是完全可以的。
您可以提交分析类型的二进制编码,但拼写出来更清晰,自我记录。添加新的分析类型时,二进制编码有点脆弱;添加新数字会影响所有请求的URL,即使是那些不使用新类型的请求。
服务器端数据库是这种Web应用程序的典型代表,它可能是一个很好的解决方案。您可能还需要考虑像sqlite或derby这样的进程内SQL数据库解决方案,以避免单独数据库进程的复杂性。
答案 1 :(得分:0)
我建议更全面地使用HTTP POST。针对相同的URI发出所有POST请求:/analysisrequest
。使用application/x-www-form-urlencoded
发送参数。
所以:
Host: yourserver.com Accept: */* Content-Length: 73 Content-Type: application/x-www-form-urlencoded face_recognition=true&text_detection=true&ad_detection=true&profile_id=33
multipart/form-data
还允许您在与文件上执行的操作相同的请求中发送正在分析的文件,假设这是一个期望的场景。有了额外的优势,您应该能够为HTML表单和REST API使用完全相同的API端点。