Я хочу вернуть ответ json, когда выполняется вызов API для маршрута API Laravel 5.7, когда модель не найдена. Для этого я изменил render()
метод app\Exceptions\Handler.php
следующим образом
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException && $request->wantsJson()) {
return response()->json(['message' => 'Not Found!'], 404);
}
return parent::render($request, $exception);
}
и мой контроллер show()
использует модель Book
, подобную этой
public function show(Book $book)
{
return new BookResource($book->load('ratings'));
}
Тест на почтальоне, вызов get для localhost:8000/api/books/1
(идентификатор 1 был удален) продолжает возвращать страницу по умолчанию laravel 404 not found вместо json.
Я пропустил шаг или что-то? Я также заметил, что добавление условного оператора в методе контроллера show()
выглядит следующим образом
public function show(Book $book)
{
if ($book) {
return new BookResource($book->load('ratings'));
} else {
return response()->json(['message' => 'Not found'], 404);
}
}
возвращает тот же результат html вместо json.
Каким будет правильный способ справиться с этим сценарием?