Добавьте больше атрибутов в обработчик исключений laravel - PullRequest
0 голосов
/ 26 января 2020

Я создаю успокоительный API с помощью laravel и добавляю еще несколько пользовательских атрибутов в обработчик исключений laravel. Ищете лучший способ сделать это.

В настоящее время я использую Laravel 6, и если я устанавливаю заголовок Accept для приложения / json, исключения возвращаются в формате json. Я все еще хочу сохранить существующую логику c о том, как laravel обрабатывает исключение с помощью метода рендеринга следующим образом:

    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }

Текущий метод возвращает только сообщение, когда отладка имеет значение false.

{
    "message": "No query results for model [App\\Model]"
}

Я хотел бы добавить больше атрибутов к данным ответа для существующего исключения и пользовательских:

{
    "message": "No query results for model [App\\Model]",
    "type": "exception",
    "url": "link to api docs",
    "id": "#id of the request"
}

Я не хочу переписывать все логи c в render (), но хочу чтобы сохранить его как есть, просто добавив эти атрибуты.

1 Ответ

0 голосов
/ 26 января 2020

я использую этот

public function render($request, Exception $exception)
    {
        if ($exception instanceof ModelNotFoundException || $exception instanceof NotFoundExeptionMessage){
            return $this->NotFoundExeptionMessage($request, $exception);
        }
        return parent::render($request, $exception);
    }

этот код проверяет ошибку и передает ее NotFoundExeptionMessage, если заголовок устанавливает application / json, а в противном случае возвращает рендер и через секунду

public function NotFoundExeptionMessage($request, Exception $exception): JsonResponse
    {
        return $request->expectsJson()
            ? new JsonResponse([
                'data' => 'Not Found',
                'Status' => 'Error'
            ], 404)
            :        parent::render($request, $exception);

    }

Я проверяю, хочет ли запрос ответа json, мы возвращаем сообщение json, а в противном случае мы возвращаем визуализацию, вы можете настроить jsonresponse удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...