Costum findOrFail для API-маршрутов

Я думаю, что это должно быть реализовано по умолчанию, так как я работаю в маршрутах / api.php.

Я хочу дать 404 сообщение об ошибке json в случае, если мы не находим строки для данного id спор о findOrFail() метод.

Что-то вроде:

return response()->json(['status' => 'ERROR', 'error' => '404 not found'], 404);

Вместо по умолчанию Sorry, the page you are looking for could not be found. лезвие страницы.

Я не хочу делать:

$item = Model::find($id);
if(is_null($item))
return response()->json(['status' => 'ERROR', 'error' => '404 not found'], 404);

Везде, когда я получаю idи я не хотел бы реализовывать это в промежуточном программном обеспечении, так как это приведет к некоторой путанице в файле api.php.

2

Решение

Вы всегда можете поймать исключение в App \ Exceptions \ Handler.php

Импортируйте исключение в класс, используя следующее:

use \Illuminate\Database\Eloquent\ModelNotFoundException;

и в методе рендеринга добавьте

if ($e instanceof ModelNotFoundException) {

return response()->json([
'message' => 'Record not found',
], 404);

}
2

Другие решения

Просто добавлю, что я проверил эти три исключения:

  1. Осветить \ Database \ красноречивый \ ModelNotFoundException;
  2. Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException;
  3. Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException;

И затем возвращает JSON, если ожидается:

if ($request->expectsJson()) {
return response()->json(['error' => $msg], $code);
}
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector