ステータスコード
番号で結果を伝える
ここまで 200 / 201 / 204 / 404 を使ってきました。ここで整理します。
ステータスコードは 3 桁ですが、意味を決めているのは先頭の 1 桁です。
| 先頭 | 意味 | 誰の話か |
|---|---|---|
| 2 | うまくいった | — |
| 4 | 頼み方がおかしい | 送った側 |
| 5 | こちらで失敗した | サーバー側 |
4 と 5 の違いが要点です。4 は相手に直してもらう、5 はこちらが直すという切り分けになっています。
よく使うもの
| コード | 使う場面 |
|---|---|
| 200 | 取得・更新が成功した |
| 201 | 新しく作った |
| 204 | 成功したが返すものが無い(削除) |
| 400 | 送られてきた内容がおかしい |
| 404 | 指定されたものが無い |
| 500 | こちらの都合で処理できなかった |
400 だけ、まだ使っていません。次の第5章で入力検証を書くときに登場します。価格が数値でない、商品名が空、といった場合に返します。
400 と 404 の見分け
迷いやすい 2 つです。
プレーンテキスト
POST /items 価格が "abc" → 400 送られた内容がおかしい
GET /items/999 → 404 指定されたものが無い依頼の中身がおかしいのが 400、依頼は正しいが対象が無いのが 404 です。
500 は書かない
500 は自分で返すものではありません。想定していなかった失敗が起きたときに、結果的にそうなるものです。
自分で res.status(500) と書く場面はほとんどありません。書いているとしたら、本当は 400 か 404 で表せる場合が多いはずです。第5章のエラーハンドリングで、この扱いを整えます。
迷ったら成功か失敗か
細かい番号に迷ったら、まず 2 か 4 か 5 かを決めてください。そのうえで表を見れば十分です。正確な番号より、成功と失敗が取り違えられていないことのほうがずっと大切です。
手を動かす
演習では、場面から適切なステータスコードを選ぶ関数を書きます。判断の基準を自分の中に作ってください。
要件
fetched(取得できた) とupdated(更新できた) は 200created(新しく作った) は 201、deleted(削除した) は 204invalid(送られた内容がおかしい) は 400、missing(対象が無い) は 404、それ以外は 500
入出力例
pickStatus("fetched") → 200
pickStatus("updated") → 200
pickStatus("created") → 201
pickStatus("deleted") → 204
pickStatus("invalid") → 400
pickStatus("missing") → 404
pickStatus("unknown") → 500ヒント
編集 ゆめさく編集部