0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Day3 — ステータスコードガイド:成功・リダイレクト・エラーの意味と使い分け

Last updated at Posted at 2025-12-03

はじめに

API を書く上で欠かせないのが HTTPステータスコード
しかし、「200 と 500 くらいしか普段意識していない…」という人も多いはずです。

ステータスコードを正しく使えると、

・API の可読性が上がる

・バグ調査が圧倒的に早くなる

・フロントエンドと円滑にコミュニケーションが取れる

・REST API の品質が一気に上がる

というメリットがあります。

この記事では よく使うステータスコードを “実際のAPI例” とともに理解できる ように解説します。

ステータスコードは5つのカテゴリに分かれる

ステータスコードは頭文字でカテゴリ分けされます。

ステータス カテゴリ
1xx 情報
2xx 成功
3xx リダイレクト
4xx クライアントのエラー
5xx サーバのエラー

特に API 開発で重要なのは 2xx・4xx・5xx の3つです。

API 開発で「必ず使う」ステータスコード一覧

以下の8つを理解しておけば基本的なAPIは大抵作れます。

コード 意味 用途
200 OK 成功 データ取得・更新成功
201 Created 作成成功 新規作成
204 No Content 成功(返すデータなし) 削除成功
400 Bad Request リクエストが不正 バリデーションエラー
401 Unauthorized 認証エラー ログインしていない
403 Forbidden 権限なし アクセス禁止
404 Not Found データが存在しない 存在しないID
500 Internal Server Error サーバエラー 想定外の例外

実例で理解する:Laravel でステータスコードを返す

ここからは、
「実際に API を書く時にどう使うのか?」
を Laravel のコード例で説明します。


200 OK — データ取得成功

return response()->json([
    'id' => 1,
    'name' => 'Taro'
], 200);

フロント側ではよく見る形:

if (response.status === 200) {
  // データ取得成功
}

201 Created — 新規作成成功

POST の後に返すのが基本。

$user = User::create($request->all());

return response()->json($user, 201);

ポイント:
作成したリソースを返すのが一般的


204 No Content — 成功だが返すデータなし

DELETE でよく使う。

$user->delete();

return response()->noContent(); // 204

注意:
204 のときはボディを返さない のがルール。


400 Bad Request — リクエストが不正

バリデーションエラー時に使います。

$request->validate([
    'email' => 'required|email',
]);


// エラー時 422 を返すが実質 400 系のエラー

Laravel は自動で 422 Unprocessable Entity を返します。


401 Unauthorized — 認証エラー

ログインしていない場合。

if (!auth()->check()) {
    return response()->json(['message' => 'Unauthorized'], 401);
}

403 Forbidden — 権限不足

ログイン済みでも、権限が不足している場合。

if (!$user->isAdmin()) {
    return response()->json(['message' => 'Forbidden'], 403);
}

401 と 403 の違い:

状態 コード
ログインしてない 401
ログインしてるけど権限がない 403

404 Not Found — データが見つからない

GET /users/99999

のように存在しないIDの場合。

$user = User::find($id);

if (!$user) {
    return response()->json(['message' => 'Not Found'], 404);
}

500 Internal Server Error — 想定外のエラー

例外が起きたとき。

try {
    // 何かの処理
} catch (\Exception $e) {
    return response()->json(['message' => 'Server Error'], 500);
}

API 開発では 基本的に500は出さないのが理想
ログに記録して原因調査するのが良い習慣です。


REST API でのステータスコードの「正しい使い分け」

具体的にどう使うのか、1つの流れにしてみると…

操作 返すべきコード
一覧取得 200
詳細取得 200
作成成功 201
更新成功 200
削除成功 204
バリデーション失敗 422
認証エラー 401
権限エラー 403
対象が存在しない 404
サーバ内部エラー 500

REST API では コードの使い分けは設計品質の象徴 です。

今日のまとめ

・ステータスコードは API の「返事の種類」

・2xx(成功)、4xx(クライアントエラー)、5xx(サーバエラー)が重要

・特に 200 / 201 / 204 / 400 / 401 / 403 / 404 / 500 を押さえておけばOK

・Laravelでの返し方とフロントでの扱い方を理解しておくと実装が楽になる

・ステータスコードが正しく使えると API の品質が一気に上がる

明日の Day4 は…

 「HTTPヘッダー入門」
Content-Type、Accept、Authorization、CORS、Cookie など
実務で使うヘッダーを取り扱います!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?