自分やチームのやり方でずっと開発していたらあまり気にしない問題だが、サーバーからnullやemptyのデータが返ってくるときはどんなエラーコードを使うべきかについて面接などで聞かれることがあるらしい。
普段はデータを返せる状態ならば200 OK
を返すようにしていたが、調べてみたところ、他にもやり方がいくつかあったため、調べてみた。
404 Not Found
まずは、404を返すやり方がある。
実際に返ってくるデータがないから、見つかりませんでしたよー(Not Found)の意味で404を返す。
RESTの思想的にも合っていて、意味もわかりやすい。
しかし、空のデータであることがエラーとして判断されるべきかは考えどころではありそう。
ちゃんと設定すればいいと思うが、Sentryなどのエラー通知を行っていたら本当の404パターンと見分けつかなくなるかも?
200 OK
とりあえずレスポンスがちゃんと返ってきているからOKにするやり方。
js側でオプショナルにしておけば空で渡ってきて空の処理も難しくなさそう。
しかし、エラー処理を全部しないといけないので一発で動くものを作ることは難しそう。
204 No Content
データが空だからコンテンツありませんよー(No Content)とするやり方。
204にしているということはわざわざサーバー側で処理を入れているということになるので、意図が明確でわかりやすい形になりそう。
その分、200と204をわけて処理する必要が合って、200だけパターンより手間がかかりそう。
あとは、空だからレスポンスのbodyが完全にない状態だから処理に困る場合もあるかも?
おわりに
何か正解があるのかなと思い、周りに聞いたり、コミュニティのdiscussionを見ていると、この問題は特に正解が存在しないらしい。
200系の方を好んでる人が多い印象は受けた。
自分の環境が200を使っているからってのもありそうだけど...
面接でこのことについて聞かれたら、「チームのやり方に合わせます」と答えた方が良さそう