Laravel 框架返回状态拦截代码


Posted in PHP onOctober 18, 2019

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

使用查询

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

拦截代码

App\Exceptions\Handler
<?php
 
namespace App\Exceptions;
 
use Exception;
use Illuminate\Support\Facades\Log;
use Illuminate\Database\QueryException;
use App\Traits\Response\InterfaceResponse;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
 
/**
 * 异常处理
 *
 * Date: 21/03/2018
 * @author George
 * @package App\Exceptions
 */
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 \Illuminate\Http\Request $request
	 * @param Exception $exception
	 * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
	 */
 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 \Illuminate\Http\Request $request
	 * @param AuthenticationException $exception
	 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Response
	 */
	public function unauthenticated($request, AuthenticationException $exception)
	{
		return failed('身份认证失败', 401);
 }
}

以上这篇Laravel 框架返回状态拦截代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
20个PHP常用类库小结
Sep 11 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
php中bind_param()函数用法分析
Mar 28 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 #PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 #PHP
mac pecl 安装php7.1扩展教程
Oct 17 #PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 #PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 #PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 #PHP
关于laravel 日志写入失败问题汇总
Oct 17 #PHP
You might like
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
python实现简单的计时器功能函数
2015/03/14 Python
python复制与引用用法分析
2015/04/08 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
神经网络python源码分享
2017/12/15 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python 有效的括号的实现代码示例
2019/11/11 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
机械设计及其自动化专业求职信
2014/06/09 职场文书
建筑安全责任书范本
2014/07/24 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
教师个人成长总结
2015/02/11 职场文书
Python数据结构之队列详解
2022/03/21 Python
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL