https://blog.csdn.net/mp624183768/article/details/122033024
书接上文
在异常的时候注释掉这部分
在app的项目下覆写render方法 并添加以下内容
public function render($request, Throwable $e)
{
//判断路径
if ($request->is('api/*')) {
//如果抛出异常
if ($e instanceof \Illuminate\Validation\ValidationException) {
//将异常信息打印出来
return response($e->errors());
}
}
return parent::render($request, $e); // TODO: Change the autogenerated stub
}
依旧打开
http://127.0.0.1:8000/api/v1/admin/test/
错误信息便会打印出来
返回的是两个arrray。我们希望拿到一个array 并且通过自定义的状态码封装过来
public function render($request, Throwable $e)
{
//判断路径
if ($request->is('api/*')) {
//如果抛出异常
if ($e instanceof \Illuminate\Validation\ValidationException) {
//将异常信息打印出来
/**
* array:2 [
* 0 => array:1 [
* 0 => "请输入标题"
* ]
* 1 => array:1 [
* 0 => "请输入内容"
* ]
* ]
*/
$error_result = array_values($e->errors());
//如果想每次打出来一个错误。可以使用。
// $message=$error_result[0][0]
$message = "";
foreach ($error_result as $value) {
$message .= $value[0] . ",";
}
if (strlen($message) > 0) {
$message = substr($message, 0, -1);
}
$result = [
'status' => 40000,
'message' => $message,
];
return response()->json($result, 400);
}
}
return parent::render($request, $e); // TODO: Change the autogenerated stub
}
错误码是400.错误日志也一目了然
还记得我们做这个模块化的目的吗。
为了防止laravel升级。我们可以尽量的不动laravel的代码
自己抽离出来一个Common模块
并把app Handler 复制拿过来 且注意修改命名空间
app handler中的 render方法也是可以删除不要了
然后注入到
启动文件的app中
虽然产生了变化。但是也是配置性质的代码。灵活还是有的