yii2 开发api接口时优雅的处理全局异常的方法
框架(架构)  /  管理员 发布于 7年前   192
前言:个人觉得,学习或温习一套 在 今天就把 注册异常处理器 异常处理器 定义相应的异常处理器, 对 异常实体 主要是简单的把状态码的传递封装一下,用更容易理解的类名来代理传递。 使用范例 在一些 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。Web
框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(Logic,Dao,Entity),全局异常处理
几个方面下手,这几项了解后,框架上手就游刃有余了。然后我比较喜欢在开工前整理好框架的全局异常处理,方便写 api
时错误的统一响应。api
接口的开发过程中,我们需要对用户数据进行严格的校验,防止非法输入对服务产生安全问题,在开发过程中,我比较喜欢即时的以抛出异常
的方式中断请求的处理,并以全局异常处理器
格式化处理后统一返回给客户端。yii2
自带的全局异常处理器改写至对 api
友好(yii2
的 yii\web\HttpException
默认对 web 请求友好,都是以text/html
的方式返回错误描述,对api
不友好,api
当然是json
)。yii2
也是以 controller/action
的方式定义一个异常处理器的,我们可以在 components=>errorHandler
中自定义。# config/web.php'components' => [ 'errorHandler' => [ 'errorAction' => 'exception/handler' ]]
app\actions\ErrorApiAction
继承 yii\web\ErrorAction
,可以拿到yii2
为我们整理好的全局异常。# controllers/ExceptionController.php [ 'class' => 'app\actions\ErrorApiAction', ] ]; }}
api
友好的错误异常处理器,这里我也只是简单的把响应格式改了一下,异常的上下文还是用yii2
自带的处理的。#actions/ErrorApiAction.phpgetResponse()->setStatusCodeByException($this->exception); // json 格式返回 Yii::$app->getResponse()->format = Response::FORMAT_JSON; // 返回的内容数据 return [ 'msg' => $this->exception->getMessage(), 'err' => $this->exception->getCode() ]; }}
exceptions/HttpException.php
statusCode, $message, $code, $previous); }}
exceptions/HttpForbiddenException.php
exceptions/HttpUnauthorizedException.php
exceptions/HttpForbiddenException.php
exceptions/HttpNotFoundException.php
service logic model
中根据需要即时抛出异常即可,上层控制器拿到的永远都是正常的返回数据,绝对的2xx
响应簇throw new HttpBadRequestException("具体的非法描述", 4001);throw new HttpUnauthorizedException("请认证后访问");throw new HttpForbiddenException("无权访问");throw new HttpNotFoundException("请求资源不存在");
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号