204 No Content について

前回の記事 prmd の辛いところ で「手続きクラスをコールするだけのAPIの返り値は No Content で構わない」と書いたものの、 もし今後なんらかの JSON を返却する必要がでてきたら?と考えると、 最初から HTTP/1.1 200 OK としておくべきな気がしてきた。

Response は empty としかったのはドキュメント上でも、 レスポンスサンプルが

{}

だけとなってしまって、意図してこうなっているのかわかりづらいので、 意味のない JSON を返すくらいなら、実体としては No Content なのだから、 HTTP/1.1 204 No Content でいいじゃない、という発想だったのだけど、 もし JSON の返却要件が追加されたら、当然ステータスコード200201 になりうるので、 その時点でステータスコードが変わってしまうのはイマイチ君な気がする。 だったら最初から 200 を返しつつ、空 JSON をレスポンスにしておくのが正しい気がする。

200 にしたけど、やっぱり実装が変わって、  何かリソースを作成、リダイレクトしたいから 201 にするべきってなったらどうするんだというモヤモヤが新たに・・)