たとえば、実際には常に存在するapiメソッド/api/orders.getOrders
があります。 このメソッドが次の形式のデータを返さない場合、404または200のHTTP応答コードを送信する必要がありますか?利用可能なデータがない場合のHTTP戻りコード
{ "orders":[] }
たとえば、実際には常に存在するapiメソッド/api/orders.getOrders
があります。 このメソッドが次の形式のデータを返さない場合、404または200のHTTP応答コードを送信する必要がありますか?利用可能なデータがない場合のHTTP戻りコード
{ "orders":[] }
は正しいです。 RFC 7231
の4xx(クライアントエラー)ステータスコードのクラスから
は、クライアントが誤りを犯しているように見えることを示しています。
404(見つかりません)ステータスコードはオリジンサーバがターゲット資源あなたのケースで
の現在の表現を見つけられなかったことを示し、クライアントははないを求める中でミスをしませんでしたリソース;オリジンサーバーはリソースの現在の表現を見つけました。したがって、404(実際には4xxクラスの応答全体)は適切ではありません。
ステータスコード204は、サーバーが要求を正常に実行したこと、および応答ペイロード本体に送信する追加のコンテンツがないことを示します。
「内容なし」は、HTTP応答メッセージ本文が空であることを意味します。つまり、返される表現は0バイトです。空のリソースの空でない表現を返すときは適切ではありません。
'204'は、エンティティ本体を送信することを制限します。しかし、クライアントは、「204」応答を受信すると、そのリソースのデータが利用可能でないことを既に知っている。 '200 'レスポンスのために' {"orders":[]} 'のようなものを返す代わりに、' 204 'とボディも実行可能です。これはさらに、クライアントがレスポンス本体を解析しないようにします。 –
私はあなたのAPIをGET/api/ordersに変更してRESTフレンドリーなものにすることを検討し、空であってもリソースが存在するので200を返すことを検討するべきだと思います。 404はリソースが存在しないことを意味します〜= urlは正しくありません –
[204](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5)。 @RonanQuillevere URIは多かれ少なかれRESTに優しいことができますか?説明してください。 RESTはURIデザイン、HTTPにも何ら制約を課さない。リソースは一意に識別可能でなければならず、そのためURI。だから説明してください。 –
URLに動詞を使用するのではなく、代わりにHTTP動詞(GET、POST、PUT、DELETE ...)を使用してください。私はこれを読むことをお勧めします:http://developer.pearson.com/sites/default/files/api-design-ebook-2012-03%20(1)_0.pdf –