ユーザーのお気に入りがない場合は200?404?
/users/123/favorites/articles
上記のURIで示されるリソース「ID:123のユーザーがお気に入りに設定している記事」
これが0件だったときに、返すべきレスポンスは200なのか、404なのか
この判断にすごく悩みました
自分の中での結論
123のユーザーがクリップしているトークが0件
であれば200です
空のリソースがあるという考えで、存在しない(404)とは違うという結論です
123のユーザーそのものがいない場合
これは404です
/users/123/favorites/articles
このリソースが空ではなく、存在しません
ページングや検索はどうするべきか
これもリソースの存在有無で確認すると筋がよさそうです
/articles?offset=1000&limit=20
このoffset, limitはあくまでフィルタリングなので、
フィルタリングの結果が空だとしても、articlesというリソースが存在するなら
200で空を返すというのが良さそうです
検索においても、フィルタリングの一種と考えれば同様の理屈が当てはまります
articlesというリソースそのものが存在しないなら404です
結論
200と404のステータスコードについて悩んだときはリソースの存在有無を中心に判断するべき
プロジェクト統一ルール, 共通認識をつくっておくのも大事である