質問

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意的であり、最も明確なものであれば何でも使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top