Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
52
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@mfykmn

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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
52
Help us understand the problem. What are the problem?