LoginSignup
53
50

More than 5 years have passed since last update.

RailsでRestfulのAPIでのHTTPステータスコードど応答内容について

Posted at

RailsでRestfulのAPIを実装していて、createのときに成功した際にstatusを:createdにしていたので、updateを実装したときにstatusを:updatedとかにしてしまい、テストが通らなくて小一時間ほど悩んでしまいました。

簡単にHTTPステータスコードと応答内容をどうしといたほうがいいのかメモを残しておきます。

基本的なリソースに対する操作

Railsのコントローラで下記のメソッドのときのステータスコードと応答の内容は実際のAPIの受け側でどうしたいかにもよってくるかと思いますが、だいたい下記のようになるのではないでしょうか。

  • create
  • update
  • destroy

create

statusはcreated(201)を返して、新しく作成したオブジェクトを返します。

render status: :created

実際の作成された中身はビューにjbuilderとかで記述します。
APIの受け側でidが新しく発行されるので、その情報を返してあげます。

update

updateのときはHTTP的にはPUTなので、下記参照すると200か204を返す必要があります。

たいがいAPIの受け側で特に中身は必要ないと思うので下記のように記述します。

head :no_content

destroy

destroyのときはHTTP的にはDELETEなので、updateと同様に200か204を返す必要があります。また、DELETEの場合は、処理だけ受け付けて実際の消去をしない場合は202を返すみたいです。

Railsで記述するのは、updateと同様に下記のようにします。

head :no_content

RailsのHTTPステータスコードシンボル

RailsのHTTPステータスコードシンボルに関しては下記がいい感じでまとまっています。

以上です。

53
50
2

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
53
50