当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel 框架返回状态拦截代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-08 16:19:32 浏览: 评论:0 

今天小编就为大家分享一篇Laravel 框架返回状态拦截代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

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

使用查询

  1. composer require betterde/response 
  2. // 安装后直接调用以下 
  3. # stored 
  4. return stored($data$message = '创建成功'); 
  5.    
  6. #updated 
  7. return updated($data$message = '更新成功'); 
  8.    
  9. #deleted 
  10. return deleted($message = '删除成功'); 
  11.    
  12. #accepted 
  13. return accepted($message = '请求已接受,等待处理'); 
  14.    
  15. #notFound 
  16. return notFound($message = '您访问的资源不存在'); 
  17.    
  18. #internalError 
  19. return internalError($message = '未知错误导致请求失败'); 
  20.    
  21. #failed 
  22. return failed($message$code = Response::HTTP_BAD_REQUEST); 
  23.    
  24. #success 
  25. return success($data); 
  26.    
  27. #message 
  28. return message($message$code = Response::HTTP_OK); 
  29.    
  30. #respond 
  31. return respond($data = [], $message = '请求成功'array $header = []); 

拦截代码

App\Exceptions\Handler

  1. <?php 
  2.    
  3. namespace App\Exceptions; 
  4.    
  5. use Exception; 
  6. use Illuminate\Support\Facades\Log; 
  7. use Illuminate\Database\QueryException; 
  8. use App\Traits\Response\InterfaceResponse; 
  9. use Illuminate\Auth\AuthenticationException; 
  10. use Illuminate\Validation\ValidationException; 
  11. use Illuminate\Auth\Access\AuthorizationException; 
  12. use Illuminate\Database\Eloquent\ModelNotFoundException; 
  13. use Symfony\Component\HttpKernel\Exception\HttpException; 
  14. use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; 
  15. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; 
  16. use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; 
  17.    
  18. /** 
  19.  * 异常处理 
  20.  * 
  21.  * Date: 21/03/2018 
  22.  * @author George 
  23.  * @package App\Exceptions 
  24.  */ 
  25. class Handler extends ExceptionHandler 
  26.     use InterfaceResponse; 
  27.    
  28.  /** 
  29.   * 定义不需要记录的异常类 
  30.   * 
  31.   * @var array 
  32.   */ 
  33.  protected $dontReport = [ 
  34.         HttpException::class
  35.         ValidationException::class
  36.         ModelNotFoundException::class
  37.         AuthorizationException::class
  38.         AuthenticationException::class
  39.     ]; 
  40.    
  41.  /** 
  42.   * A list of the inputs that are never flashed for validation exceptions. 
  43.   * 
  44.   * @var array 
  45.   */ 
  46.  protected $dontFlash = [ 
  47.   'password'
  48.   'password_confirmation'
  49.  ]; 
  50.    
  51.     /** 
  52.      * 定义需要记录的异常 
  53.      * 
  54.      * Date: 21/03/2018 
  55.      * @author George 
  56.      * @param Exception $exception 
  57.      * @return mixed|void 
  58.      * @throws Exception 
  59.      */ 
  60.  public function report(Exception $exception
  61.  { 
  62.   parent::report($exception); 
  63.  } 
  64.    
  65.     /** 
  66.      * 拦截异常并生成对应的响应内容 
  67.      * 
  68.      * Date: 21/03/2018 
  69.      * @author George 
  70.      * @param \Illuminate\Http\Request $request 
  71.      * @param Exception $exception 
  72.      * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response 
  73.      */ 
  74.  public function render($request, Exception $exception
  75.  { 
  76.     // 拦截数据库操作异常 
  77. //  if ($exception instanceof QueryException) { 
  78. //      Log::error($exception); 
  79. //      return $this->internalError(); 
  80. //      } 
  81.    
  82.         // 拦截一般异常并生成响应 
  83.         if ($exception instanceof GeneralException) { 
  84.             return failed($exception->getMessage(), $exception->getCode() ?: 500); 
  85.         } 
  86.    
  87.         // 拦截404异常 
  88.         if ($exception instanceof ModelNotFoundException) { 
  89.             return $this->notFound(); 
  90.         } 
  91.    
  92.         // 拦截授权异常 
  93.         if ($exception instanceof AuthorizationException) { 
  94.             return failed('您无权访问', 403); 
  95.         } 
  96.    
  97.         // 参数验证错误的异常,我们需要返回 400 的 http code 和一句错误信息 
  98.         if ($exception instanceof ValidationException) { 
  99.             return failed(array_first(array_collapse($exception->errors())), 422); 
  100.         } 
  101.    
  102.         // 用户认证的异常,我们需要返回 401 的 http code 和错误信息 
  103.         if ($exception instanceof UnauthorizedHttpException) { 
  104.             return failed('未提供Token', 401); 
  105.         } 
  106.    
  107.         // 捕获404异常 
  108.         if ($exception instanceof NotFoundHttpException) { 
  109.         return $this->notFound(); 
  110.         } 
  111.    
  112.   return parent::render($request$exception); 
  113.  } 
  114.    
  115.     /** 
  116.      * 认证失败后抛出异常 
  117.      * 
  118.      * Date: 2018/5/27 
  119.      * @author George 
  120.      * @param \Illuminate\Http\Request $request 
  121.      * @param AuthenticationException $exception 
  122.      * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Response 
  123.      */ 
  124.     public function unauthenticated($request, AuthenticationException $exception
  125.     { 
  126.         return failed('身份认证失败', 401); 
  127.  } 
  128. }

Tags: Laravel框架返回状态拦截

分享到: