メディア分析エンジン用のREStful APIを設計する方法
-
22-07-2019 - |
質問
Restfulコンセプトは初めてなので、さまざまなタスクを実行するために、セットアップする必要があるメディア分析サービス用のシンプルなAPIを設計する必要があります。アップロードされた画像や動画の顔分析、領域検出など。
最初の設計の概要は次のとおりです。
- クライアントは、構成XMLファイルを
http://manalysis.com/facerecognition
にPOSTします。これにより、複数の分析セッションに使用できるプロファイルが作成されます。応答XMLには、このプロファイルを参照するためのProfileID
が含まれています。クライアントはこのステップをスキップして、デフォルトの構成パラメーターを使用できます - クライアントは、分析対象のビデオデータを
http://manalysis.com/facerecognition
にPOSTします(設定されている場合、パラメーターとしてProfileIDを使用)。これにより、分析セッションが作成されます。戻りXMLにはSessionID
があります。 - クライアントは、GETを
http://manalysis.com/facerecognition/SessionID
に送信して、セッションのステータスを受信できます。
私は正しい軌道に乗っていますか?具体的には、次の質問があります。
- URLに
facerecognition
を含める必要がありますか? Roy Fieldingは、「REST APIは固定リソース名または階層を定義してはならない」と述べています。これはその間違いの例ですか? - 分析結果は、1つの大きなXMLファイルでクライアントに返されるか、各イベントが検出されたときに返されます。結果を返す場所を分析エンジンに伝えるにはどうすればよいですか?
- DELETE呼び出しを使用して、分析の完了時にプロファイルを明示的に削除する必要がありますか?
ありがとう、
C
解決
エントリポイントのURLを修正できます、
GET /facerecognition
<FaceRecognitionService>
<Profiles href="/facerecognition/profiles"/>
<AnalysisRequests href="/facerecognition/analysisrequests"/>
</FaceRecognitionService>
XMLプロファイルをProfiles要素のhref属性のURLに投稿して、新しいプロファイルを作成します
POST /facerecognition/profiles
201 - Created
Location: /facerecognition/profile/33
新しい分析リクエストを作成して分析を開始します。セッションという用語はあまりにも一般的であり、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>
選択した特定のURLは比較的relatively意的であり、最も明確なものであれば何でも使用できます。
所属していません StackOverflow