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