{ "code" : 200, "data" : [], "error": '', "trace": array_slice($e->getTrace(), 0, 10), //debug }
slim: /vendor/slim/slim/Slim/Handlers/Error.php
renderHtmlErrorMessage();
laravel handler.php
$status = 200;
$headers = [];
$error = 'system error';
$code = Code::ERROR;
if ($exception instanceof HttpException) {
$status = $exception->getStatusCode();
$headers = $exception->getHeaders();
$error = $exception->getMessage();
$code = $exception->getCode();
} else if ($exception instanceof ValidationException) {
$errors = $exception->errors();
$error = current($errors)[0];
$code = Code::PARAMETER_ERROR;
}
$ret = [
'code' => $code, //错误代码 0:正确,非0:错误
'data' => null, //返回数据体
'error' => $error, //返回消息
'timestamp' => round(microtime(true) * 1000),
];
if (env('APP_DEBUG')) {
$ret['trace'] = $this->getTraceString($exception);
}
return response()->json($ret, $status, $headers);
if ($request->expectsJson()) {
//获取异常信息
$errorMsg = $e->getMessage();
$statusCode = 500; //异常 状态码
$headers = []; //异常 header
if ($e instanceof ModelNotFoundException) {
$statusCode = 404;
} elseif ($e instanceof AuthorizationException) {
$statusCode = 403;
} elseif ($e instanceof ValidationException && $e->getResponse()) {
$statusCode = $e->getResponse()->getStatusCode();
$errors = (array) $e->validator->errors()->getMessages();
$errorMsg = array_pop($errors)[0]; //两层数据结构
} elseif ($e instanceof HttpExceptionInterface) {
$statusCode = $e->getStatusCode();
$headers = array_merge($headers, $e->getHeaders());
}
$errorMsgArr = json_decode($errorMsg, true);
$errorMsg = is_array($errorMsgArr) ? $errorMsgArr : [$errorMsg];
$response = [
'success' => false,
'data' => [],
'errors' => $errorMsg,
'trace' => env('APP_DEBUG', false) ? array_slice($e->getTrace(), 0, 5) : [],
];
return response()->json($response, $statusCode, $headers);
}
return parent::render($request, $e);
Lumen handler.php
if ($request->expectsJson()) {
//获取异常信息
//获取异常 状态码/header
$statusCode = 500;
$headers = [];
$errorMsg = $e->getMessage();
if ($e instanceof ModelNotFoundException) {
$statusCode = 404;
} elseif ($e instanceof AuthorizationException) {
$statusCode = 403;
} elseif ($e instanceof ValidationException && $e->getResponse()) {
$statusCode = $e->getResponse()->getStatusCode();
$errors = (array) $e->validator->errors()->getMessages();
$errorMsg = array_pop($errors)[0]; //两层数据结构
} elseif ($e instanceof HttpExceptionInterface) {
$statusCode = $e->getStatusCode();
$headers = array_merge($headers, $e->getHeaders());
}
$errorMsgArr = json_decode($errorMsg, true);
$errorMsg = is_array($errorMsgArr) ? $errorMsgArr : [$errorMsg];
$response = [
'success' => false,
'data' => [],
'errors' => $errorMsg,
'trace' => env('APP_DEBUG', false) ? array_slice($e->getTrace(), 0, 5) : [],
];
return response()->json($response, $statusCode, $headers);
}
return parent::render($request, $e);