Laravel 框架返回状态拦截代码

2020-09-03 12:25:43

可拦截系统的返回的状态自己在单独处理。

使用查询

composer require betterde/response// 安装后直接调用以下# storedreturn stored($data, $message = '创建成功'); #updatedreturn updated($data, $message = '更新成功'); #deletedreturn deleted($message = '删除成功'); #acceptedreturn accepted($message = '请求已接受,等待处理'); #notFoundreturn notFound($message = '您访问的资源不存在'); #internalErrorreturn internalError($message = '未知错误导致请求失败'); #failedreturn failed($message, $code = Response::HTTP_BAD_REQUEST); #successreturn success($data); #messagereturn message($message, $code = Response::HTTP_OK); #respondreturn respond($data = [], $message = '请求成功', array $header = []);

拦截代码

AppExceptionsHandler
<?php namespace AppExceptions; use Exception;use IlluminateSupportFacadesLog;use IlluminateDatabaseQueryException;use AppTraitsResponseInterfaceResponse;use IlluminateAuthAuthenticationException;use IlluminateValidationValidationException;use IlluminateAuthAccessAuthorizationException;use IlluminateDatabaseEloquentModelNotFoundException;use SymfonyComponentHttpKernelExceptionHttpException;use IlluminateFoundationExceptionsHandler as ExceptionHandler;use SymfonyComponentHttpKernelExceptionNotFoundHttpException;use SymfonyComponentHttpKernelExceptionUnauthorizedHttpException; /** * 异常处理 * * Date: 21/03/2018 * @author George * @package AppExceptions */class Handler extends ExceptionHandler{use InterfaceResponse;  /**  * 定义不需要记录的异常类  *  * @var array  */ protected $dontReport = [HttpException::class,ValidationException::class,ModelNotFoundException::class,AuthorizationException::class,AuthenticationException::class,];  /**  * A list of the inputs that are never flashed for validation exceptions.  *  * @var array  */ protected $dontFlash = [  'password',  'password_confirmation', ]; /** * 定义需要记录的异常 * * Date: 21/03/2018 * @author George * @param Exception $exception * @return mixed|void * @throws Exception */ public function report(Exception $exception) {  parent::report($exception); } /** * 拦截异常并生成对应的响应内容 * * Date: 21/03/2018 * @author George * @param IlluminateHttpRequest $request * @param Exception $exception * @return IlluminateContractsRoutingResponseFactory|SymfonyComponentHttpFoundationResponse */ public function render($request, Exception $exception) { // 拦截数据库操作异常// if ($exception instanceof QueryException) {// Log::error($exception);// return $this->internalError();//} // 拦截一般异常并生成响应if ($exception instanceof GeneralException) {return failed($exception->getMessage(), $exception->getCode() ?: 500);} // 拦截404异常if ($exception instanceof ModelNotFoundException) {return $this->notFound();} // 拦截授权异常if ($exception instanceof AuthorizationException) {return failed('您无权访问', 403);} // 参数验证错误的异常,我们需要返回 400 的 http code 和一句错误信息if ($exception instanceof ValidationException) {return failed(array_first(array_collapse($exception->errors())), 422);} // 用户认证的异常,我们需要返回 401 的 http code 和错误信息if ($exception instanceof UnauthorizedHttpException) {return failed('未提供Token', 401);} // 捕获404异常if ($exception instanceof NotFoundHttpException) { return $this->notFound();}   return parent::render($request, $exception); } /** * 认证失败后抛出异常 * * Date: 2018/5/27 * @author George * @param IlluminateHttpRequest $request * @param AuthenticationException $exception * @return IlluminateHttpJsonResponse|IlluminateHttpResponse */public function unauthenticated($request, AuthenticationException $exception){return failed('身份认证失败', 401); }}
相关文章 大家在看