前言:个人觉得,学习或温习一套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 <"htmlcode">#actions/ErrorApiAction.php <"color: #ff0000">异常实体主要是简单的把状态码的传递封装一下,用更容易理解的类名来代理传递。
exceptions/HttpException.php
<"htmlcode"><"htmlcode"><"htmlcode"><"htmlcode"><"color: #ff0000">使用范例在一些
service logic model
中根据需要即时抛出异常即可,上层控制器拿到的永远都是正常的返回数据,绝对的2xx
响应簇throw new HttpBadRequestException("具体的非法描述", 4001); throw new HttpUnauthorizedException("请认证后访问"); throw new HttpForbiddenException("无权访问"); throw new HttpNotFoundException("请求资源不存在");以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!华山资源网 Design By www.eoogi.com暂无评论...
更新日志
2024年09月23日
2024年09月23日
- 梁汉文2008-EDMONDHITS48[香港]3CD[WAV+CUE]
- 国风大师纯音系列《童丽-[渭城曲]》1CD[WAV分轨][593.5MB]
- 国风大师纯音系列《许菱子《烧筝2》古筝曲集》1CD[WAV分轨][1.3GB]
- 王子异《1996 Part.2》[320K/MP3][18.29MB]
- 群星.1994-宝丽金最倾情3CD【宝丽金】【WAV+CUE】
- 乐俊亨.2024-同泪【CharioticMusic】【FLAC分轨】
- 何耀珊.2006-收获【华纳】【WAV+CUE】
- 梁汉文1994-壹精选[华星][WAV+CUE]
- 洪荣宏1981-歹路不可行·相思雨(飞跃复刻版)[光美][WAV+CUE]
- 旅行团2015-10Day’s[来福胶泥][WAV+CUE]
- 龙千玉.2011-卡将哟【豪记】【WAV+CUE】
- 蔣志光.1993-多情多寂寞(国专)【BMG】【WAV+CUE】
- 陈慧娴.1996-雪映美白96演唱会2CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 王子异《1996 Part.2》[FLAC/分轨][50.66MB]
- 贵族音乐《古典名曲与轻音乐钢琴 打开宝宝睡眠开关》[320K/MP3][155.91MB]