yii2开发美国石油学会(美国石油协会)接口时优雅的处理全局异常的方法
前言:个人觉得,学习或温习一套网框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(逻辑、道、实体),全局异常处理几个方面下手,这几项了解后,框架上手就游刃有余了。然后我比较喜欢在开工前整理好框架的全局异常处理,方便写美国石油学会(美国石油协会)时错误的统一响应。
在美国石油学会(美国石油协会)接口的开发过程中,我们需要对用户数据进行严格的校验,防止非法输入对服务产生安全问题,在开发过程中,我比较喜欢即时的以抛出异常的方式中断请求的处理,并以全局异常处理器格式化处理后统一返回给客户端。
今天就把yii2自带的全局异常处理器改写至对美国石油学会(美国石油协会)友好(yii2的yii\web\HttpException默认对网请求友好,都是以文本/html的方式返回错误描述,对美国石油学会(美国石油协会)不友好美国石油学会(American Petroleum Institute)当然是json)。
注册异常处理器
yii2也是以控制器/动作的方式定义一个异常处理器的,我们可以在组件=错误处理程序中自定义。
# config/web。PHP“组件”=[“错误处理程序”=[“错误操作”=“异常/处理程序”]]异常处理器
定义相应的异常处理器,应用程序\操作\错误操作继承yii\web\ErrorAction,可以拿到yii2为我们整理好的全局异常。
#控制器/异常控制器。PHP?phpnamespace应用程序\控制器;使用yii \ web \控制器;类异常控制器扩展控制器{ /** *为actionHandler挂载独立的action * @ return array */public function actions(){ return[' handler '=[' class '=' app \ actions \ erroapiaction ',]];}}对美国石油学会(美国石油协会)友好的错误异常处理器,这里我也只是简单的把响应格式改了一下,异常的上下文还是用yii2自带的处理的。
# actions/erroapiaction。PHP?PHP/* * * @作者[电子邮件受保护]* @日期2019-5-13 17:20:10 * Api全局错误异常处理器*/namespace app \ actions;使用Yii使用yii \ web \ ErrorAction使用yii \ web \响应类错误操作扩展了错误操作{公共函数run(){//根据异常类型设定相应的响应码yii : $ app-getResponse()-setStatusCodeByException($ this-exception);//json格式返回yii : $ app-getResponse()-format=response : format _ JSON;//返回的内容数据返回[' msg '=$ this-exception-getMessage(),' err '=$ this-exception-getCode()];}}异常实体
主要是简单的把状态码的传递封装一下,用更容易理解的类名来代理传递异常/HttpException.php
?php/** *应用程序异常基础类*/namespace app \异常;类不存在扩展\ yii \ web \ HttpException { public function _ _ construct($message=null,$code=0,\ Exception $ previous=null){ parent : _ _ construct($ this-statusCode,$ message,$code,$ previous);} }异常/Httpf山梨醇Exception.php
?php/** * 400错误请求*/命名空间app \异常;类HttpBadRequestException扩展了httpexception { public $ statusCode=400;}异常/HttpUnauthorizedException.php
?php/** * 401未授权*/命名空间app \异常;类HttpUnauthorizedException扩展了HttpException { public $ statusCode=401;}异常/Httpf山梨醇Exception.php
?php/** * 403禁止*/命名空间app \异常;类Httpf山梨醇例外扩展了httpeexception { public $ statusCode=403;}异常/HttpNotFoundException.php
?找不到PHP/* * * 404 */命名空间app \异常;类HttpNotFoundException扩展了HttpException { public $ statusCode=404;}使用范例
在一些服务逻辑模型中根据需要即时抛出异常即可,上层控制器拿到的永远都是正常的返回数据,绝对的2xx响应簇
抛出新的httpaddressexception('特定非法描述',4001);引发了新的httpauthorizedexception('请在身份验证后访问');引发新的Httpf山梨醇异常(“无访问”);引发新的HttpNotFoundException(“请求的资源不存在”);
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:yii2开发美国石油学会(美国石油协会)接口时优雅的处理全局异常的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。