Какой правильный порядок обработки исключений при выполнении HTTP запроса?

Как правильно структурировать обработку запросов к веб-сервису, учитывая различные типы запросов (авторизованные и неавторизованные) и разные шаги валидации, чтобы определить порядок выполнения обработчиков для запросов типа POST /items и GET /items/{itemID}?
  • 26 августа 2024 г. 0:34
Ответы на вопрос 2
Правильный порядок обработки исключений при выполнении HTTP запроса включает следующие шаги:

1. Определение общего обработчика исключений для всех запросов, например, через middleware веб-фреймворка или централизованный класс обработки исключений.

2. Проверка и обработка авторизации или аутентификации на первом этапе запроса. Если запрос требует авторизации, проверить наличие корректного токена или сессии пользователя. Если авторизация не пройдена, выбросить исключение NotAuthorizedException.

3. Проведение валидации данных запроса. Для запросов типа POST /items следует проверить корректность входящих данных и выполнить необходимые действия по сохранению или обновлению данных. Для запросов типа GET /items/{itemID} проверить наличие запрашиваемого элемента в базе данных.

4. Обработка других возможных исключений, таких как NotFoundException (если элемент не найден), BadRequestException (если запрос содержит некорректные данные), и т.д.

5. Возвращение соответствующего HTTP статуса и сообщения об ошибке в случае возникновения исключения.

Чтобы структурировать обработку запросов к веб-сервису для различных типов запросов и их шагов валидации, можно использовать следующий порядок выполнения обработчиков:

1. Middleware или класс обработки исключений для общей обработки исключений всех запросов.
2. Middleware или класс для авторизации пользователя.
3. Класс для обработки запросов типа POST /items, включая валидацию данных запроса, сохранение или обновление элемента и обработку исключений.
4. Класс для обработки запросов типа GET /items/{itemID}, включая проверку наличия элемента в базе данных и обработку исключений.
5. Обработка остальных возможных исключений в централизованном классе обработки исключений.
Здесь по мне так, к вопросу нужно подходить иначе, что чаще спрашивается то и раньше валидировать, т.е. эти пункты должны быть первыми и простыми. Потом по мере усложнения делить этапы по колличеству интераций и их сложности. Вот откуда здесь могут знать сколько у тебя юзеров и сколько у тебя itemID в bd. Может проще 404 отдать, если нет такого itemID, чем юзера искать.
Похожие вопросы