PUT
とDELETE
メソッドで200返すか204返すか悩んだのでそのメモ
200返すか204を返すか大体の方針が見えるはず!
204について
HTTPステータスコードの204 No Content
訳すると内容なし
。HTTPステータスコードとして204を返すのなら、その名の通りレスポンスボディーは何も返さないのが正解
参考: RFC2616 日本語訳の複製
PUT
RFC2616 9.6 PUT 日本語訳の複製には更新成功時には200
か204
と記載されていました
- 既存のデータを更新するだけなので、正しく更新された場合は204のステータスコードだけを返せばいいよー派
- 変更された状態のデータを返すべき!ステータスコードは200で!派
PUTでは上記の2つの派閥?考え?宗教戦争????があるようです
RESTfulについて勉強する際にバイブルとしていた本。Web API: The Good Parts では、後者の200を返すことをおすすめしていたので、基本は200でいいのかなー安直
自分は基本は200
だけど用意するAPIで使い分けるという意見に自分は落ち着きました
(W3Cもどちらかを使いましょうまでしか言及していないのでこれでいいはず...)
DELETE
DELETEに関しては、W3Cがこれ!ってものを出していたので従うのがいいかなと思います。
成功したレスポンスは、もしレスポンスがステータスで表しているエンティティを含んでいるなら 200 (OK)、もし動作がまだ行われていないなら 202 (Accepted)、もし動作は行われたが、レスポンスにエンティティを含んでいないなら 204 (No Content) であるべきである>
RFC2616 9.7 DELETE 日本語訳の複製
論理削除なら200、物理削除なら204でいけそうです
おまけ
すごい図がありました
ただし200と204の分岐がto content
でしかなかったので結局ボディー送るか送らないか考える必要はあるんですけどね笑
https://raw.githubusercontent.com/for-GET/http-decision-diagram/master/httpdd.png