75
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

200 or 204 どっちを使うか

PUTDELETEメソッドで200返すか204返すか悩んだのでそのメモ
200返すか204を返すか大体の方針が見えるはず!

204について

HTTPステータスコードの204 No Content
訳すると内容なし。HTTPステータスコードとして204を返すのなら、その名の通りレスポンスボディーは何も返さないのが正解

参考: RFC2616 日本語訳の複製

PUT

RFC2616 9.6 PUT 日本語訳の複製には更新成功時には200204と記載されていました

  • 既存のデータを更新するだけなので、正しく更新された場合は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

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
75
Help us understand the problem. What are the problem?