Laravel 框架返回状态拦截代码
时间:2022-07-27
本文章向大家介绍Laravel 框架返回状态拦截代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
可拦截系统的返回的状态自己在单独处理。
使用查询
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 = []);
拦截代码
AppExceptionsHandler
<?php
namespace AppExceptions;
use Exception;
use IlluminateSupportFacadesLog;
use IlluminateDatabaseQueryException;
use AppTraitsResponseInterfaceResponse;
use IlluminateAuthAuthenticationException;
use IlluminateValidationValidationException;
use IlluminateAuthAccessAuthorizationException;
use IlluminateDatabaseEloquentModelNotFoundException;
use SymfonyComponentHttpKernelExceptionHttpException;
use IlluminateFoundationExceptionsHandler as ExceptionHandler;
use SymfonyComponentHttpKernelExceptionNotFoundHttpException;
use SymfonyComponentHttpKernelExceptionUnauthorizedHttpException;
/**
* 异常处理
*
* Date: 21/03/2018
* @author George
* @package AppExceptions
*/
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 IlluminateHttpRequest $request
* @param Exception $exception
* @return IlluminateContractsRoutingResponseFactory|SymfonyComponentHttpFoundationResponse
*/
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 IlluminateHttpRequest $request
* @param AuthenticationException $exception
* @return IlluminateHttpJsonResponse|IlluminateHttpResponse
*/
public function unauthenticated($request, AuthenticationException $exception)
{
return failed('身份认证失败', 401);
}
}
以上这篇Laravel 框架返回状态拦截代码就是小编分享给大家的全部内容了,希望能给大家一个参考。
- Linux Rsync备份服务介绍及部署守护进程模式
- 企业级Tomcat安全管理优化方案
- “妈妈”域名Mommy.com66万高价易主 现已建站
- 脸书Messenger已中招,新的加密货币挖矿病毒出现!
- Linux中MySQL配置文件my.cnf参数优化
- 干货,比较全面的c#.net公共帮助类(Common.Utility)
- Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
- JDK1.7 安装加(一劳永逸的环境配置)
- Jquery 遍历数组之$().each方法与$.each()方法介绍
- ExtJs学习笔记(2)_Basic GridPanel[基本网格]
- Jquery 遍历数组之grep()方法介绍
- ExtJs学习笔记(1)_Hello World!
- Jquery filter()方法简介
- 加拿大滑铁卢大学刘腾博士:平行增强学习及其无人驾驶应用
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 【NLP保姆级教程】手把手带你HAN文本分类(附代码)
- 【情感分析】基于Aspect的情感分析模型总结(PART III)
- NLP简报(Issue#6)
- python实现kNN(最近邻)
- python实现朴素贝叶斯
- Transformers Assemble(PART V)
- 面试官问我:如何加载100M的图片却不撑爆内存,一张 100M 的大图,如何预防 OOM?
- 预训练模型中的可插拔式知识融入——利用Adapter结构
- 【情感分析】基于Aspect的情感分析模型总结(PART IV)
- 详解ERNIE-Baidu进化史及应用场景
- 安排!微软UniLM 2.0解读
- SpringBoot的事务传播机制
- NLP简报(Issue#7)
- 14种模式搞定面试算法编程题(PART I)
- BART原理简介与代码实战