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; でも行けました ^^
コメントありがとうございます🙏🏻
本当ですね、気づきませんでした😵
こちらを使う方が良さそうですね