エンティティがあるとしましょう
{
"id": 1
"inProgress": true,
}
エンドポイントがあります:
/api/v1/entities/
すべてのエンティティを取得するため、/api/v1/entities/1
は、id = 1のエンティティを取得します/api/v1/entities/in-progress
は、進行中のエンティティを取得します。進行中のエンティティは1つだけであることに注意してください。現在、/api/v1/entities/in-progress
には2つの状況があります。
2番目のケースではどのステータスコードが返されますか?
404-見つかりません
エンティティがないため、問題ありません。また、404の場合、HTTPはThe requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible.
と表示します
2
リクエストは成功したので問題ないように見えますが、なぜnull結果を返す必要があるのでしょうか。
204
リクエストは成功しましたが、結果はありません。これも問題ないようです。
使用するステータスコードとその理由は何ですか。
4xxの範囲のHTTPステータスコードは、クライアントエラーを示します。したがって、404を使用することはここでは適用できないと思います。これをクライアントエラーと見なした場合、クライアントはサーバーの状態に関する知識を持っている必要があり、これは高度に結合された設計を示します。
JimmyJamesがコメントにうまく書いているので、
404は、「何を指しているのかわからない」という意味です。これは、「あなたが何を求めているのかは正確にわかっていますが、データがありません」とは大きく異なります。
しかし、どの時点でも進行中のエンティティは1つだけであると言います。これはビジネスルールのように聞こえ、URLで1つのオブジェクトのみを返すことにした場合、インターフェイスはビジネスルールを反映します。
in-progress
URLから配列を返すことを検討することをお勧めします。その後、偶然にも、結果が0または1の配列を取得できます。
おそらくこれをクエリに変更して、/api/v1/entities?in-progress=true