Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 标准化Laravel中的API错误响应(API资源)_Php_Laravel_Json Api - Fatal编程技术网

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

Php 标准化Laravel中的API错误响应(API资源),php,laravel,json-api,Php,Laravel,Json Api,制定新的回购协议。在做了一些研究之后,我决定根据最佳实践,使用标准化API响应 关于返回一致的用户可读性(不是例外)的最佳方法,我无法得到一个好的答案。这些消息可能直接从控制器返回。使用Laravel的API资源,我已经能够创建类似这样的东西,但感觉很粗糙 $error=(object)(['errorCode'=>422,“messageDetail”=>[“名字必须至少包含三个字符。”]]); 返回新的ErrorResource($error); ErrorResource在本例中用于格式

制定新的回购协议。在做了一些研究之后,我决定根据最佳实践,使用标准化API响应

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

$error=(object)(['errorCode'=>422,“messageDetail”=>[“名字必须至少包含三个字符。”]]);
返回新的ErrorResource($error);
ErrorResource
在本例中用于格式化JSON。这种想法是,每当开发人员想要编写错误消息时,他们都会使用
ErrorResource


有更好的办法吗

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


这是一种更灵活的方法,有助于在一个位置执行此操作。

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



}

在基本控制器中写入逻辑,并在控制器中扩展basecontroller,这样您就可以使用类似的
parent::parentmethod($params)