Является ли такой подход плохим в работе с исключениями, если в методе render сразу же возвращать ответ в формате json?

Ссылка скопирована
1 ответ

Не является ли такой подход плохим в работе с исключениями, если в методе render сразу же возвращать ответ в формате json, вот пример:

namespace AppExceptionsTelegram;  use DomainException; use IlluminateHttpResponse;  class InvalidDataTelegramException extends DomainException {     public function render()     {         return response(             ['message' => __('auth.incorrect_telegram')],             Response::HTTP_UNPROCESSABLE_ENTITY,         );     } }

namespace AppExceptionsTelegram; use DomainException; use IlluminateHttpResponse; class InvalidDataTelegramException extends DomainException { public function render() { return response( ['message' => __('auth.incorrect_telegram')], Response::HTTP_UNPROCESSABLE_ENTITY, ); } }

Дополнительно:

Когда вы задаете вопрос, вам русским языком пишут, Сформулируйте вопрос так, чтобы сразу было понятно, о чём речь.

Ответы:

Исключение без стандартных message, code. Фикс json респонз. Не делайте так.
Это сейчас вам достаточно всегда получать json. Но что будет при вызове из консоли? а в логах?

Как минимум - релиазовать IlluminateContractsSupportResponsable.
А если SymfonyComponentHttpKernelExceptionHttpExceptionInterface релиазовать или просто наследовать от HttpException то в вашем случае будет достаточно

throw new InvalidDataTelegramException(Response::HTTP_UNPROCESSABLE_ENTITY, __('auth.incorrect_telegram');

throw new InvalidDataTelegramException(Response::HTTP_UNPROCESSABLE_ENTITY, __('auth.incorrect_telegram');

IlluminateFoundationExceptionsHandler сделает тоже, что вы и даже больше.

  • Я тоже сначала хотел на это заругаться, но потом увидел что речь идет о методе render. Насколько я понимаю, при вызове из консоли этот метод вызываться не будет. А в логах будет как раз и code, и message
  • Ипатьев, в общем то да... соглашусть что однозначно "плохом" не является.
    только вот имхо форсить json - выстрел в ногу через X месяцев (но это не точно).
    Для обработки исключений есть "замечательный" AppExceptionsHandler->map.

Имхо, таки рендерить исключения для клиента лучше или в контроллере, или в команде, где там у вас точка входа.
Иначе, если у вас исключение знает, как его обрабатывать - то какое же это исключение?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Нет, использование подхода, при котором в методе render сразу же возвращается ответ в формате JSON, не является плохим с точки зрения работы с исключениями. Однако, есть несколько важных моментов, которые стоит учитывать.

Во-первых, важно правильно обрабатывать исключения в вашем коде. Если возникнет исключение в методе render, то нужно убедиться, что оно корректно обрабатывается и возвращается в нужном формате JSON. Необходимо учитывать все возможные варианты ошибок и предусмотреть соответствующие обработчики.

Во-вторых, следует учитывать, что возвращение ответа в формате JSON может быть не всегда удобным для клиента. Некоторые клиенты могут ожидать ответ в другом формате или требовать дополнительных данных. Поэтому важно убедиться, что ваш метод render гибко подходит к различным сценариям использования.

Наконец, необходимо помнить о безопасности. Возвращая ответ в формате JSON, убедитесь, что данные корректно сериализованы и не содержат уязвимостей для атак. Также следует учитывать возможность CSRF-атак и других угроз безопасности.

В целом, использование метода render для возврата ответа в формате JSON не является плохим подходом, но требует внимательного отношения к обработке исключений, гибкости в работе с различными сценариями и безопасности данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно