Стандартизация ответов об ошибках API в Laravel (Ресурсы API) - PullRequest
0 голосов
/ 10 ноября 2019

Работа над новым репо. Проведя некоторые исследования, я решил использовать Ресурсы API для стандартизации своих ответов API в соответствии с jsonapi.org рекомендациями.

Я не могу получить хороший ответ о наилучшем способе возврата согласованных читаемых пользователем сообщений об ошибках (не исключений). Это сообщения, которые потенциально могут быть возвращены непосредственно из контроллера. Используя Ресурсы API Laravel, я смог создать что-то вроде этого, но это кажется хакерским.

$error = (object) (['errorCode' => 422, "messageDetail" => ["First name must contain at least three characters."]]);
return  new ErrorResource($error);

ErrorResource используется для форматирования JSON в этом случае. Идея заключается в том, что всякий раз, когда разработчик хочет закодировать сообщение об ошибке, он будет использовать ErrorResource.

Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

внутри App/Exceptions/Handler.php вы можете изменить функцию рендеринга в соответствии с вашими требованиями и вернуть ресурс из этой функции. Вот пример

   public function render($request, Exception $exception)
{
    if ($request->is('api/*') || $request->expectsJson() || $request->is('webhook/*')) {


         $error = (object) (['errorCode' => 422, "messageDetail" => ["First name must contain at least three characters."]]);

         return  new ErrorResource($error);

    }
        return parent::render($request, $exception);



}
0 голосов
/ 10 ноября 2019

Для меня лучше сделать форматирование ошибок в app / Exceptions / Handler.php: render.

Это более гибкий подход, который помогает сделать это в одном месте.

...