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 相关文章推荐
PHP中创建并处理图象
Oct 09 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
Sep 30 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
php删除左端与右端空格的方法
2014/11/29 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
js实现表格筛选功能
2017/01/18 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
Python异常处理总结
2014/08/15 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
django 多数据库及分库实现方式
2020/04/01 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
新年爱情寄语
2014/04/08 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
2014年教务工作总结
2014/12/03 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
环保建议书作文500字
2015/09/14 职场文书
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js