4

私は REST API を持っており、ユーザーがGET提供するバーコード イメージに基づいて、リソースからいくつかの情報にアクセスできるようにする新しい関数を追加しています。

私の質問は次のとおりです。ベストプラクティスの観点からこれを行う正しい方法は何ですか?

以下は、問題に関する私の考えの一部です。

得る:

を使用して、通常は次のようGETURI で基準を指定します:foo?name=bar

これらの回答によると、URI の代わりに本文でデータを渡すことも、良い解決策とは思えません。

役職:

ただし、リクエストを使用することもできますが、POST情報を取得するだけなので、これはあまり RESTful ではありません。

4

3 に答える 3

4

リソースは 2 つのことを行います

  1. バーコード画像を解析してIDを取得
  2. 上記の ID を使用して、何らかの (データ) ソースから取得した情報をクライアントに提供します

バーコード イメージの分析をリソースBarCodesとしてモデル化できます。このリソースは、POSTを介して送信された画像を含むリクエストを受け取り、バーコード画像を分析し (1)、データの取得に使用できるロケーションヘッダーの URL を返します (2)。

このアプローチは、実現したい 2 つの機能を 2 つのリソース/ステップに分割します。

このアプローチで得られるもの:

  • REST準拠インターフェース
  • バーコード イメージ抽出タスクを非同期で処理し、ロケーション ヘッダーに URL のみを返して、バーコード抽出プロセスに関するステータスを取得することを決定できます。
  • バーコード解析と情報検索の分離機能
于 2012-04-07T14:30:39.550 に答える
1

まず、画像 (ファイル) データをブラウザーから Web サーバーに渡す唯一の方法は、POST 要求を使用することです。最適なソリューションを探しているときは、このことに注意してください。

第 2 に、RESTful リソース モデルの意味するところは、リソースには非常に短い文字列または数字である識別子があり、作成時にサーバーによって割り当てられ、後でクライアントが使用できるようになるということです。

あなたの問題は REST モデルにうまく適合しません。したがって、実際に機能する方法を使用することは明らかです。

于 2012-04-07T13:30:10.617 に答える
0

RESTfulサービスでは、リソースは固定された一連の操作を使用して操作されます。

PUT : creates a new resource, which can be then deleted using DELETE
GET : retrieves the current state of a resource
POST: transfers a new state onto a resource

あなたの場合、あなたはGET操作を探すべきです。大量の入力データを含むリクエストをURIにエンコードできない問題(つまり、エラー414:UROが長すぎます))は、URIで長いパラメーターを渡す必要がある場合にのみ問題になります。これは、取得するためのRESTの制限の1つです。これは問題ではありません。サービスがXMLファイルのバッチを返すRESTサービスを試しました。

于 2012-04-07T13:11:47.167 に答える