2016-09-02 2 views
0

Iは、以下に示すコントローラを有する:RESTful Webサービスから送信されたビデオまたは画像に関連付けられたメタデータを取得する方法は?

@RequestMapping(value = "/videos/{id}", 
        headers = "Accept=image/jpeg, image/jpg, image/png, video/mp4", 
        method = RequestMethod.GET) 
public ResponseEntity<byte[]> loadVideo(@PathVariable("id") long campaignId, 
             Principal principal) throws IOException { 

このコントローラは、指定されたIDに関連付けられたメディアのバイトストリームを返します。それはうまく動作します。私が抱えている唯一の問題は、バイト配列を送り返しているので、このビデオに関連するメタデータ(タイトル、説明、ビュー数など)を読み込むことです。メタデータをどこに置くかはあまりにもわかりません。

  • メタデータをレスポンスヘッダーに配置する必要がありますか?

  • ビデオ(バイトスチーム)とメタデータを含むオブジェクトを返す コールの2つのコールを別々にする必要がありますか?

  • 上記の2つのオプションよりも良い方法がありますか?
+0

@RomanVottner私はヘッダーのアプローチを試していきます。当面はこれが最善の選択肢だと思います。ありがとうございました –

答えて

1

私のコメントは、私はここに再びそれを再投稿することを決め、すでに長ったらしいだったので:あなたはimage/jpgvideo/mp4のような特定のメディアタイプを扱う場合は、レスポンスのペイロードとして、ヘッダーなどのメタデータを含める必要があり

べきそれぞれのファイルのバイトだけが含まれています。これにより、単純なHEAD要求によって実際のファイルのバイトをダウンロードすることなく、メタデータの参照が可能になります。

特定のAPIは、独自のメディアタイプを定義したり、クライアントにJSONまたはXMLベースの応答を送信したりします。この場合、ペイロードには、ファイルのバイトをbase64でエンコードされた文字列として、メタデータをプレーンテキストとして含むあらかじめ定義された構造が含まれていることがよくあります。一度に複数のファイルを送信するこれらのAPI引数は、マルチパートコンテンツを処理するこの方法より簡単です。

関連する問題