【问题标题】:Standardizing API error responses in Laravel (API Resources)在 Laravel 中标准化 API 错误响应(API 资源)
【发布时间】:2020-03-06 12:31:10
【问题描述】:

正在开发一个新的存储库。在做了一些研究之后,我决定根据jsonapi.org 最佳实践使用API Resources 来标准化我的API 响应。

关于返回一致的用户可读error messages(不是例外)的最佳方式,我无法得到一个好的答案。这些是可能直接从控制器返回的消息。使用 Laravel 的 API 资源,我已经能够创建这样的东西,但感觉很hacky。

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

ErrorResource 在这种情况下用于格式化 JSON。想法是,每当开发人员想要编写错误消息时,他们都会使用ErrorResource

有没有更好的方法?

【问题讨论】:

  • 在基本控制器中编写逻辑并在控制器中扩展基本控制器,以便您可以像parent::parentmethod($params);一样使用

标签: php laravel json-api


【解决方案1】:

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);



}

【讨论】:

    【解决方案2】:

    对我来说最好在 app/Exceptions/Handler.php:render 中进行错误格式化。

    这是一种更灵活的方法,有助于在一个地方完成。

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2019-04-11
      • 1970-01-01
      • 2015-07-11
      • 2019-10-20
      • 1970-01-01
      • 2016-09-28
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多