laravel框架的业务流程顺序(Laravel+Dingo/Api 自定义响应的实现)
类别:脚本大全 浏览量:1205
时间:2022-04-02 01:53:34 laravel框架的业务流程顺序
Laravel+Dingo/Api 自定义响应的实现在最近的开发开发项目中,我使用了Dingo/Api这个第三方Api库。
Dingo是个很强大的Api库, 但在开发的过程中,需要自定义响应字段。
刚开始使用Ding/Api时,返回如下:
|
{ "message" : "422 Unprocessable Entity" , "errors" : { "mobile" : [ "手机号格式不正确" ] }, "status_code" : 422 } |
这是输入字段验证错误时,Dingo返回的结果。
这样看上去没什么问题。因为这边 status_code 是比较规范的。对于 PHP 来说,直接 json_decode 之后,并没有什么难办的地方。但是对面安卓和 IOS 则是使用的强类型语言。尤其是 Java,需要对每一个 Json 对象进行新建,然后序列化。所以,这种格式不统一的返回结果,是无法接受的
解决方法: 我们需要将所有的异常信息归总到一个地方,在AppServiceProvider的boot()方法中添加
|
// 将所有的 Exception 全部交给 App\Exceptions\Handler 来处理 app( 'api.exception' )->register( function (Exception $exception ) { $request = Illuminate\Http\Request::capture(); return app( 'App\Exceptions\Handler' )->render( $request , $exception ); }); |
然后在App\Exceptions\Handler.php中的render()方法中:
|
$class = get_class( $exception ); switch ( $class ) { case 'Dingo\Api\Exception\ValidationHttpException' : if ( $request ->expectsJson()) return $this ->errorRespond( $exception ->getErrors()->first(), $exception ->getStatusCode()); break ; default : if ( $request ->expectsJson()) return $this ->errorRespond( '系统休息了' , 500000); break ; } |
再次访问接口:
|
{ "response_status_code" : 422, "response_message" : "请填写手机号" , "data" : [] } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://segmentfault.com/a/1190000018175041
您可能感兴趣
- jquery中wrap、wrapAll、wrapInner
- laravel框架的业务流程顺序(Laravel+Dingo/Api 自定义响应的实现)
- laravel 后台任务配置(在Laravel中使用GuzzleHttp调用第三方服务的API接口代码)
- thinkphp框架实例(ThinkPHP框架整合微信支付之JSAPI模式图文详解)
- vue离线地图有哪些(vue 集成腾讯地图实现api附DEMO)
- ASP.NET Web API是什么
- laravel框架少见方法详解(laravel 配置路由 api和web定义的路由的区别详解)
- html5 固定图片(HTML5拖放API实现自动生成相框功能)
- jmeter接口性能测试教程(Xmeter API接口测试工具使用方法解析)
- 创建一个简单的Web API 项目
- djangoapi接口开发(Django使用AJAX调用自己写的API接口的方法)
- 如何让API接口更安全
- 百度地图获取api过程(JavaScript接入百度地图API的方法步骤)
- webapi 参数的传递
- laravel api 调试(Laravel框架自定义公共函数的引入操作示例)
- php开发api接口登录(PHP调用接口API封装的例子)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
热门推荐
- 常用的几种jsp开发环境搭建(怎么一键安装Jsp网站程序?Jsp环境一键配置软件JspStudy推荐)
- php面向对象如何开发(PHP创建对象的六种方式实例总结)
- python中怎么实现队列的创建(python 堆和优先队列的使用详解)
- linux后台运行程序的命令(在后台运行Linux命令的方法)
- dedecms 操作日志代码修改(dedecms 调用单页栏目内容到首页的方法)
- tftp服务器怎么设置(TFTP服务器是什么意思?)
- docker和tomcat建立连接(如何基于Dockerfile构建tomcat镜像)
- php开发模式有哪些(PHP设计模式之简单工厂和工厂模式实例分析)
- sql server存储过程详解(SQL Server存储过程中编写事务处理的方法小结)
- mysql 慢查询日志