Posted at

Laravel エラー時のレスポンス形式の変更(JSON)

More than 1 year has passed since last update.


概要

ajax, api のルーティングのグループを作成したが、通常の処理は、JSON形式で返るが、

エラー発生時(400, 404, 500, 503など)の際にHTMLが返ってしまう。

エラーの時にもJSON形式で応答して欲しいので、調べた結果をメモに残す。


例外処理のrenderメソッドで対応する

下記のように特定のURL(ajax,api)などへのリクエストに対してまとめて変更する。


app/Exceptions/handler.php

// レスポンスをJSON形式に変更

if ($request->is('ajax/*') || $request->is('api/*') || $request->ajax()) {
$status = 400;
if ($this->isHttpException($exception)) {
$status = $exception->getStatusCode();
}
return response()->json([
'status' => $status,
'errors' => $this->getMessage($status)
], $status);
}

以上


参考サイト