[Laravel]HTTPステータスコードの定数

Laravel Laravel

LaravelにてAPIのレスポンスにHTTPステータスコードを指定する際、422などマイナーなステータスコードの場合に定数で分かりやすくしたいと思い探してみました。

調べた結果、定数は既に定義されていましたので紹介します。

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

\Symfony\Component\HttpFoundation\Responseにありました。
詳細は2024/05/19現在での最新のVer7.1のソースを参照して下さい。

以下のように定義されています。

/**
 * 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;
// 以下略
PHP

定数の利用方法

以下のuse文で読み込んで利用します。

use \Symfony\Component\HttpFoundation\Response;
// または
use Illuminate\Http\Response;
PHP

読み込んだ後は以下のように定数を呼び出します。

return response()->json(['id' => 1, 'name' => 'Foo Bar'], Response::HTTP_OK);
PHP

定義されているHTTPステータスコード一覧

1xx Informational

Constant NameStatus CodeNote
HTTP_CONTINUE100
HTTP_SWITCHING_PROTOCOLS101
HTTP_PROCESSING102RFC2518
HTTP_EARLY_HINTS103RFC8297

2xx Success

Constant NameStatus CodeNote
HTTP_OK200
HTTP_CREATED201
HTTP_ACCEPTED202
HTTP_NON_AUTHORITATIVE_INFORMATION203
HTTP_NO_CONTENT204
HTTP_RESET_CONTENT205
HTTP_PARTIAL_CONTENT206
HTTP_MULTI_STATUS207RFC4918
HTTP_ALREADY_REPORTED208RFC5842
HTTP_IM_USED226RFC3229

3xx Redirection

Constant NameStatus CodeNote
HTTP_MULTIPLE_CHOICES300
HTTP_MOVED_PERMANENTLY301
HTTP_FOUND302
HTTP_SEE_OTHER303
HTTP_NOT_MODIFIED304
HTTP_USE_PROXY305
HTTP_RESERVED306
HTTP_TEMPORARY_REDIRECT307
HTTP_PERMANENTLY_REDIRECT308RFC7238

4xx Client Error

Constant NameStatus CodeNote
HTTP_BAD_REQUEST400
HTTP_UNAUTHORIZED401
HTTP_PAYMENT_REQUIRED402
HTTP_FORBIDDEN403
HTTP_NOT_FOUND404
HTTP_METHOD_NOT_ALLOWED405
HTTP_NOT_ACCEPTABLE406
HTTP_PROXY_AUTHENTICATION_REQUIRED407
HTTP_REQUEST_TIMEOUT408
HTTP_CONFLICT409
HTTP_GONE410
HTTP_LENGTH_REQUIRED411
HTTP_PRECONDITION_FAILED412
HTTP_REQUEST_ENTITY_TOO_LARGE413
HTTP_REQUEST_URI_TOO_LONG414
HTTP_UNSUPPORTED_MEDIA_TYPE415
HTTP_REQUESTED_RANGE_NOT_SATISFIABLE416
HTTP_EXPECTATION_FAILED417
HTTP_I_AM_A_TEAPOT418RFC2324
HTTP_MISDIRECTED_REQUEST421RFC7540
HTTP_UNPROCESSABLE_ENTITY422RFC4918
HTTP_LOCKED423RFC4918
HTTP_FAILED_DEPENDENCY424RFC4918
HTTP_TOO_EARLY425RFC-ietf-httpbis-replay-04
HTTP_UPGRADE_REQUIRED426RFC2817
HTTP_PRECONDITION_REQUIRED428RFC6585
HTTP_TOO_MANY_REQUESTS429RFC6585
HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE431RFC6585
HTTP_UNAVAILABLE_FOR_LEGAL_REASONS451RFC7725

5xx Server Error

Constant NameStatus CodeNote
HTTP_INTERNAL_SERVER_ERROR500
HTTP_NOT_IMPLEMENTED501
HTTP_BAD_GATEWAY502
HTTP_SERVICE_UNAVAILABLE503
HTTP_GATEWAY_TIMEOUT504
HTTP_VERSION_NOT_SUPPORTED505
HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL506RFC2295
HTTP_INSUFFICIENT_STORAGE507RFC4918
HTTP_LOOP_DETECTED508RFC5842
HTTP_NOT_EXTENDED510RFC2774
HTTP_NETWORK_AUTHENTICATION_REQUIRED511RFC6585

コメント

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