在Laravel中标准化API错误响应(API资源)

问题描述 投票:0回答:2

正在制作新的仓库。经过研究后,我决定根据API Resources最佳做法使用jsonapi.org来标准化我的API响应。

我无法以最佳方式返回一致的用户可读的error messages(不是例外)。这些是可能直接从控制器返回的消息。使用Laravel的API资源,我已经能够创建类似这样的东西,但是感觉很棘手。

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

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

有更好的方法吗?

php laravel json-api
2个回答
0
投票

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

这是一种更灵活的方法,可在一处完成。


0
投票

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



}
© www.soinside.com 2019 - 2024. All rights reserved.