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
您可能感兴趣
- laravel api接口开发版本控制(Laravel 创建可以传递参数 Console服务的例子)
- ASP.NET中Web API的简单实例
- 由于Web服务器上的“ISAPI 和CGI 限制”的解决方法
- php开发api接口登录(PHP调用接口API封装的例子)
- python中pip和pip3有什么区别(ISAPI-REWRITE伪静态规则写法以及说明)
- vue3 props用法(vue3组合API中setup、 ref、reactive的使用大全)
- python爬百度api有次数限制吗(对python借助百度云API对评论进行观点抽取的方法详解)
- laravel 后台任务配置(在Laravel中使用GuzzleHttp调用第三方服务的API接口代码)
- laravel开发api支持多少并发(laravel框架 api自定义全局异常处理方法)
- api接口安全方面的几个建议
- laravel框架的业务流程顺序(Laravel+Dingo/Api 自定义响应的实现)
- jquery的动画效果api(jQuery框架实现元素显示及隐藏三种动画方式)
- laravel设置跨域请求(Laravel实现ApiToken认证请求)
- vue离线地图有哪些(vue 集成腾讯地图实现api附DEMO)
- html5 固定图片(HTML5拖放API实现自动生成相框功能)
- 使用Visual Studio为WebAPI生成帮助文档
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
热门推荐
- mysql索引建立及应用(MYSQL创建索引,这些知识应该了解)
- react绑定详解(React列表栏及购物车组件使用详解)
- vue图片组件使用方法(Vue图片裁剪组件实例代码)
- vue怎么实现拖动(Vue拖动截图功能的简单实现方法)
- jquery轮播图的左右按钮(jQuery轮播图功能实现方法)
- position零基础入门(position:sticky 粘性定位的几种巧妙应用详解)
- html5封闭ios(Html5 页面适配iPhoneX就是那么简单)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- docker搭建私有dns域名解析(docker内网搭建dns使用域名访问替代ip:port的操作)
- dedecms数据负载能力(DedeCms 5.7后台首页很卡的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9