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 相关文章推荐
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
剖析 PHP 中的输出缓冲
Dec 21 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 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的String类代码
2010/04/20 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
js正则表达式的使用详解
2013/07/09 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
vue中的ref和$refs的使用
2018/11/22 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
深入理解python对json的操作总结
2017/01/05 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
对pandas中apply函数的用法详解
2018/04/10 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python读写csv文件的方法
2019/08/13 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
python使用建议与技巧分享(二)
2020/08/17 Python
python生成word合同的实例方法
2021/01/12 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
大学应届生的自我评价
2014/03/06 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014年教师工作总结
2014/11/10 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
音乐课外活动总结
2015/05/09 职场文书
元旦晚会开场白
2015/05/29 职场文书