5

YUI ベースのクライアントのページ分割されたデータを取得するための API のような REST を設計しています。GET 要求の場合、REST URL は次のようになります。

/app/catalog/data?startIndex=<int>&results=<int>&sort=<sting>&dir=<string>

すべてのパラメーターはオプションです。つまり、パラメーターが指定されていない場合、DB からのすべてのデータがダンプされます。ここで、データベースに 1000 レコードしかないとします。次のリクエストが行われます。

/app/catalog/data?startIndex=1100&results=25

リクエストが正常に行われたにもかかわらず、データベースからのページ分割された結果が空のままである場合、どのステータス コードを返す必要がありますか?! 204これが なのかなのか、私には判断できません404

生成されるメディア タイプは JSON と CSV です。

4

4 に答える 4

13

204が最も適切だと思います。リクエストは成功しましたが、結果はありませんでした。

10.2.5 204 No Content

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation.

まさにそのケースのように聞こえます。

于 2012-07-09T20:01:41.003 に答える
7

204これが なのかなのか、私には判断できません404

ない。200空の結果 (空の XML ドキュメントまたは JSON 配列など、使用するものは何でも) を返すだけです。通常、ページ分割されたビューで REST サービスを使用するため、結果ページとともにレコードの総数を返します。これは、クライアントが間違いに気付くのに役立ちます。しかし、技術的には何も問題はありません。

204forDELETE操作 (実際に返すコンテンツはありません) および for に使用しますPUT

ところで(大胆な鉱山):

パラメータが指定されていない場合、DB からのすべてのデータがダンプされます

信じてください、あなたはこれをしたくありません...

于 2012-07-09T20:02:06.920 に答える
1

通常、結果はどのような形式で返されますか? 私はこれを 204 または 200 で空のリストを返したいと思っています。

于 2012-07-09T20:00:08.590 に答える
1

ペイロードのため、ページネーション応答の HTTP 204 は事実ではありません。ページネーションを行う場合、HTTP 204 では許可されていない、返されたアイテム、合計アイテム、オフセットなどのページネーション情報を返す必要があります。

次のいずれかを使用します。

  • count=0 の HTTP 200 で、返されたリストに項目がありません。
  • 呼び出し元が無効な URL を要求したため、HTTP 400
  • 返すアイテムが見つからないため、HTTP 404

API の動作に最も適したものを選択してください。これらの仮定のいずれかによってオフセットを超える可能性があるため、この状況ではエラー (4xx + エラー情報) を返しても安全だと思います。

  • コーディングエラー
  • Invoker が最初からデータを取得していない (新しい状態ではない)
  • 呼び出し元はページネーション データを無視しました (各応答に存在)
于 2020-12-17T13:35:57.193 に答える