LaravelでHTTPステータスコードの定数を使用する

Laravel Laravel

Laravelで、APIを作っていてHTTPステータスコードの定数が簡単に見当たらなかったので探してみました。
HTTPステータスコードの定数の使い方とサンプルを載せています。

Laravelのバージョン8で確認しています。

HTTPステータスコード定数の場所は?

\Symfony\Component\HttpFoundation\Responseにありました。

内容は下記のように定義されています。
マジックナンバーを作らないためにも使用していくといいと思います。

/**
 * Response represents an HTTP response.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class Response
{
    public const HTTP_CONTINUE = 100;
    public const HTTP_SWITCHING_PROTOCOLS = 101;
    public const HTTP_PROCESSING = 102;            // RFC2518
    public const HTTP_EARLY_HINTS = 103;           // RFC8297
    public const HTTP_OK = 200;
    public const HTTP_CREATED = 201;
    public const HTTP_ACCEPTED = 202;
    public const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
    public const HTTP_NO_CONTENT = 204;
    public const HTTP_RESET_CONTENT = 205;
    public const HTTP_PARTIAL_CONTENT = 206;
    public const HTTP_MULTI_STATUS = 207;          // RFC4918
    public const HTTP_ALREADY_REPORTED = 208;      // RFC5842
    public const HTTP_IM_USED = 226;               // RFC3229
// ------------------ 省略 ---------------------
}

使用する方法

use文で読み込んで、使用します。

use \Symfony\Component\HttpFoundation\Response;

読み込んだ後に、このように使います。

class RegisterController extends Controller
{
    public function register(Request $request)
    {
        /** @var Illuminate\Validation\Validator $validator */
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required',
            'password' => 'required'
        ]);

        if ($validator->fails()) {
            return response()->json($validator->messages(), Response::HTTP_UNPROCESSABLE_ENTITY);
        }

        $user = User::create([
            'name' =>  $request->name,
            'email' => $request->email,
            'password' => Hash::make($request->password),
        ]);

        return response()->json('Complete User Regist', Response::HTTP_CREATED);
    }
}

このようにResponseクラスの静的メソッドとして、アクセスできます。
これは201が定義されています。

Response::HTTP_CREATED

Laravelで使えるステータスコード一覧

よく使いそうなものだけ表にしてみました。

項目 ステータスコード 内容
HTTP_OK 200 リクエストが成功した
HTTP_CREATED 201 リクエストが成功して、新しくリソースが作られた
HTTP_BAD_REQUEST 400 リクエストが無効、サーバーがリクエストを理解できない
HTTP_FORBIDDEN 403 アクセス権なし
HTTP_NOT_FOUND 404 リクエストされたリソースを発見できない
HTTP_UNPROCESSABLE_ENTITY 422 リクエストは適切だけど、意味が誤っている
HTTP_INTERNAL_SERVER_ERROR 500 サーバー側で処理エラー
HTTP_SERVICE_UNAVAILABLE 503 サーバー側がメンテナンスや高負荷で落ちている

コメント

  1. 匿名 より:

    IlluminateのResponseがSymfonyのResponseを継承しているため、
    use Illuminate\Http\Response; でも行けました ^^

    • yasuaki yasuaki より:

      コメントありがとうございます🙏🏻
      本当ですね、気づきませんでした😵
      こちらを使う方が良さそうですね

タイトルとURLをコピーしました