Size: a a a

Laravel для начинающих

2020 February 18

К

Канат in Laravel для начинающих
Всем привет. Подскажите, как лучше отдавать ошибки в апи? через throw new HttpException(400, "Invalid data") или  в массиве errors через response()->json ?
источник

AP

Alexander Pavlenko 🌚 in Laravel для начинающих
когда придет чуваку "Инвалид дата"
источник

AP

Alexander Pavlenko 🌚 in Laravel для начинающих
как он узнает какая дата инвалид?
источник

К

Канат in Laravel для начинающих
ну если ему без разницы ?)
источник

АО

Александр Орловский in Laravel для начинающих
Канат
Всем привет. Подскажите, как лучше отдавать ошибки в апи? через throw new HttpException(400, "Invalid data") или  в массиве errors через response()->json ?
я предпочитаю свой враппер писать для ошибок, ловить стандартные эксепшены, запаковывать внутрь враппера с адекватным описанием ошибки и уже это отдавать на фронт
источник

АО

Александр Орловский in Laravel для начинающих
Канат
ну если ему без разницы ?)
ну, ваще, считается хорошей практикой все таки обходиться без абстрактной куйни типа "инвалид дата"
источник

К

Канат in Laravel для начинающих
Александр Орловский
я предпочитаю свой враппер писать для ошибок, ловить стандартные эксепшены, запаковывать внутрь враппера с адекватным описанием ошибки и уже это отдавать на фронт
а есть пример?)
источник

АО

Александр Орловский in Laravel для начинающих
есть
источник

АО

Александр Орловский in Laravel для начинающих
сек
источник

К

Канат in Laravel для начинающих
ок
источник

Д

Діма in Laravel для начинающих
Прочитал в теории про эксепшены, но на практике если бы кто-то подсказал то было бы хорошо.
Вот у меня такая логика.
источник

Д

Діма in Laravel для начинающих
источник

АО

Александр Орловский in Laravel для начинающих
https://gitlab.com/moofik12/alfi-last/-/blob/master/app/Exceptions/Handler.php  - здесь пляшем от ProblemResponseFactory

https://gitlab.com/moofik12/alfi-last/-/tree/master/app/Service/Api - вот тут проблем респонс фактори, и классы с ней связанные

https://gitlab.com/moofik12/alfi-last/-/blob/master/app/Http/Requests/ProblemAwareRequest.php - вот класс потомок от форм реквеста, как раз 400е ошибки инициирует, если валидация не прошла, пакует ошибку в класс-враппер Problem и кидает ProblemException, который в свою очередь хендлером обрабатывается
источник

Д

Діма in Laravel для начинающих
Когда адрес не доступен мне нужно чтобы там где
count() просто ничего не было
а сейчас ошибка
а где коллекция просто чтобы не выводило контент

а уже есть так что во view прописаны foreach и все ломается
источник

AH

Andrey Helldar in Laravel для начинающих
Канат
Всем привет. Подскажите, как лучше отдавать ошибки в апи? через throw new HttpException(400, "Invalid data") или  в массиве errors через response()->json ?
В своих проектах использую такую структуру файла App\Exceptions\Handler: https://pastebin.com/MQgaSD7W

Таким образом, в коде просто кидаю эксепшены, а этот файл разруливает в каком виде что отдавать.

Некоторые могут заметить переписанную логику метода render - это обусловлено тем, что "под капотом" при возврате используется метод проверки $request->expectsJson() на факт JSON-запроса, который почему-то некорректно отрабатывает даже с заголовками Accept: application/json и Content-Type: application/json, а заменить его можно только таким образом.

Вдобавок, при входе по апишным роутам из браузера мне также надо отдавать JSON, НО "коробка" вернет "обычный", что мне не подходит.
источник

К

Канат in Laravel для начинающих
Александр Орловский
https://gitlab.com/moofik12/alfi-last/-/blob/master/app/Exceptions/Handler.php  - здесь пляшем от ProblemResponseFactory

https://gitlab.com/moofik12/alfi-last/-/tree/master/app/Service/Api - вот тут проблем респонс фактори, и классы с ней связанные

https://gitlab.com/moofik12/alfi-last/-/blob/master/app/Http/Requests/ProblemAwareRequest.php - вот класс потомок от форм реквеста, как раз 400е ошибки инициирует, если валидация не прошла, пакует ошибку в класс-враппер Problem и кидает ProblemException, который в свою очередь хендлером обрабатывается
спасибо , ща гляну
источник

К

Канат in Laravel для начинающих
Andrey Helldar
В своих проектах использую такую структуру файла App\Exceptions\Handler: https://pastebin.com/MQgaSD7W

Таким образом, в коде просто кидаю эксепшены, а этот файл разруливает в каком виде что отдавать.

Некоторые могут заметить переписанную логику метода render - это обусловлено тем, что "под капотом" при возврате используется метод проверки $request->expectsJson() на факт JSON-запроса, который почему-то некорректно отрабатывает даже с заголовками Accept: application/json и Content-Type: application/json, а заменить его можно только таким образом.

Вдобавок, при входе по апишным роутам из браузера мне также надо отдавать JSON, НО "коробка" вернет "обычный", что мне не подходит.
спасибо, надо разобрать )
источник

AH

Andrey Helldar in Laravel для начинающих
Канат
спасибо, надо разобрать )
Слева при APP_DEBUG=true, справа - false
источник

К

Канат in Laravel для начинающих
Andrey Helldar
Слева при APP_DEBUG=true, справа - false
ужасно выглядит 😁
источник

AH

Andrey Helldar in Laravel для начинающих
Канат
ужасно выглядит 😁
JSON же.
Зато на фронте сразу понятно какая проблема
источник