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 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
php生成HTML文件的类方法
Oct 11 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
Vue实现购物车功能
2017/04/27 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
Python是编译运行的验证方法
2015/01/30 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
人机交互程序 python实现人机对话
2017/11/14 Python
python实现简单http服务器功能
2018/09/17 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
深圳茁壮笔试题
2015/05/28 面试题
中学家长会邀请函
2014/01/17 职场文书
大学计划书范文800字
2014/08/14 职场文书
个人收入证明模板
2014/09/18 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
会计工作总结范文2014
2014/12/23 职场文书
罗马假日观后感
2015/06/08 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技