Я использую Laravel 5.3. У меня мало API, где пользователь запрашивает определенный идентификатор. Для примера URL, чтобы подписаться событие
example.com/api/event/{id}/subscribe
Laravel 5 - глобальный обработчик исключений для API, запрашивающий несуществующий объект
Обычно, если id
не существует, Laravel будет возвращать отклик 500 с сообщением об ошибке «Попытка получить свойство не-объект»
Так что я хотел бы добавить проверку, если событие будет существовать, как показано ниже в каждом контроллере, где модель «идентификатор» идентификатор передается:
$event = Event::find($id)
if ($event) {
// return json data
}
else {
return response()->json([
'status' => 'object not found'
], 404);
}
Мой вопрос, лучше решение справиться с этим во всем мире, чтобы проверить, если запрашиваемый объект не существует? Мое текущее решение здесь, но я могу подумать, что должен быть лучше один
Я добавляю этот код в свой app/Exception/Handler.php
, так что каждый ави запрос несуществующий объект вернет 404 с конкретным сообщением json. Таким образом, потребитель API будет знать, что идентификатор объекта недействителен.
public function render($request, Exception $exception)
{
// global exception handler if api request for non existing object id
if ($request->wantsJson() && $exception->getMessage() == 'Trying to get property of non-object') {
return response()->json([
'status' => 'object requested not found'
], 404);
}
return parent::render($request, $exception);
}
Заранее благодарен!
'use Illuminate \ Database \ Eloquent \ ModelNotFoundException;' трюк. Благодарю. также я немного поменяю ваш код на использование 'хочетJson()' – xmhafiz