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

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_OK200リクエストが成功した
HTTP_CREATED201リクエストが成功して、新しくリソースが作られた
HTTP_BAD_REQUEST400リクエストが無効、サーバーがリクエストを理解できない
HTTP_FORBIDDEN403アクセス権なし
HTTP_NOT_FOUND404リクエストされたリソースを発見できない
HTTP_UNPROCESSABLE_ENTITY422リクエストは適切だけど、意味が誤っている
HTTP_INTERNAL_SERVER_ERROR500サーバー側で処理エラー
HTTP_SERVICE_UNAVAILABLE503サーバー側がメンテナンスや高負荷で落ちている

コメント

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