Является ли такой подход плохим в работе с исключениями, если в методе render сразу же возвращать ответ в формате json?
Не является ли такой подход плохим в работе с исключениями, если в методе 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.
Имхо, таки рендерить исключения для клиента лучше или в контроллере, или в команде, где там у вас точка входа.
Иначе, если у вас исключение знает, как его обрабатывать - то какое же это исключение?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Нет, использование подхода, при котором в методе render сразу же возвращается ответ в формате JSON, не является плохим с точки зрения работы с исключениями. Однако, есть несколько важных моментов, которые стоит учитывать.
Во-первых, важно правильно обрабатывать исключения в вашем коде. Если возникнет исключение в методе render, то нужно убедиться, что оно корректно обрабатывается и возвращается в нужном формате JSON. Необходимо учитывать все возможные варианты ошибок и предусмотреть соответствующие обработчики.
Во-вторых, следует учитывать, что возвращение ответа в формате JSON может быть не всегда удобным для клиента. Некоторые клиенты могут ожидать ответ в другом формате или требовать дополнительных данных. Поэтому важно убедиться, что ваш метод render гибко подходит к различным сценариям использования.
Наконец, необходимо помнить о безопасности. Возвращая ответ в формате JSON, убедитесь, что данные корректно сериализованы и не содержат уязвимостей для атак. Также следует учитывать возможность CSRF-атак и других угроз безопасности.
В целом, использование метода render для возврата ответа в формате JSON не является плохим подходом, но требует внимательного отношения к обработке исключений, гибкости в работе с различными сценариями и безопасности данных.