151
91

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

俺でもわかるシリーズAdvent Calendar 2017

Day 19

200 or 204 どっちを使うか

Last updated at Posted at 2017-12-20

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

参考

151
91
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
151
91

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?