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 | サーバー側がメンテナンスや高負荷で落ちている | 
  
  
  
  

コメント
IlluminateのResponseがSymfonyのResponseを継承しているため、
use Illuminate\Http\Response; でも行けました ^^
コメントありがとうございます🙏🏻
本当ですね、気づきませんでした😵
こちらを使う方が良さそうですね