Я хочу исправить ошибку 404 с помощью пользовательского ответа json.
Вот код:
try {
$registration = Registration::find($id);
if ($registration == null) throw new NotFoundHttpException();
return response()->json($registration, HttpResponse::HTTP_OK);
} catch (NotFoundHttpException $e) {
return response()->json(['message' => 'Registration not found'], HttpResponse::HTTP_NOT_FOUND);
}
но он никогда не входит в блок catch и возвращает представление HTML:
Sorry, the page you are looking for could not be found.
(1/1) NotFoundHttpException
in RoutesRequests.php line 226
at Application->handleDispatcherResponse(array(0))
in RoutesRequests.php line 164
at Application->Laravel\Lumen\Concerns\{closure}()
in RoutesRequests.php line 413
at Application->sendThroughPipeline(array(), object(Closure))
in RoutesRequests.php line 166
at Application->dispatch(null)
in RoutesRequests.php line 107
at Application->run()
in index.php line 28
at require('/Users/julien/Documents/Proyectos/jaumo/public/index.php')
in server.php line 147
Я также пытался с Registration::findOrFail($id);
, который должен возвращать ошибку 40, но это тот же результат
Я мог бы изменить это в Handler.php
:
public function render($request, Exception $e)
{
if ($e instanceof NotFoundHttpException) {
return response()->json('Not Found', HttpResponse::HTTP_NOT_FOUND);
}
return parent::render($request, $e);
}
но это не совсем то, что я хочу, здесь сообщение статическое, я бы хотел управлять им в контроллере.
Я также пытался добавить NotFoundHttpException::class
в массив $ dontReport, но он не работает
Почему и как я могу сделать это только для того, чтобы вернуть пользовательский ответ json.