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
您可能感兴趣
- php封装api(PHP常用的类封装小结4个工具类)
- 百度地图获取api过程(JavaScript接入百度地图API的方法步骤)
- ASP.NET中Web API的简单实例
- ASP.NET Web API中参数的传递
- python怎么测试api接口(python接口自动化测试之接口数据依赖的实现方法)
- jmeter接口性能测试教程(Xmeter API接口测试工具使用方法解析)
- jquery的动画效果api(jQuery框架实现元素显示及隐藏三种动画方式)
- isapi和cgi限制
- laravel 后台任务配置(在Laravel中使用GuzzleHttp调用第三方服务的API接口代码)
- jquery中wrap、wrapAll、wrapInner
- 使用Fiddler测试WebApi接口
- python高德地图可视化(利用python和百度地图API实现数据地图标注的方法)
- 由于Web服务器上的“ISAPI 和CGI 限制”的解决方法
- laravel api接口开发版本控制(Laravel 创建可以传递参数 Console服务的例子)
- laravel设置跨域请求(Laravel实现ApiToken认证请求)
- webapi 参数的传递
- 日本菜有什么好吃(日本菜有什么好吃的做法)
- 韩国泡菜做法(韩国泡菜的做法步骤)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 越难春卷(越难春卷皮怎么用)
- 休闲VS新古典 办公家居简约设计(办公家居简约设计)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
热门推荐
- python爬虫入门自学(自学python爬虫的建议和周期预算)
- 如何保证幂等性(聊聊幂等性如何保证的)
- python中random库的用法(Python minidom模块用法示例DOM写入和解析XML)
- php中的内置函数(php7下的filesize函数)
- .Net中Immutable(不可变)集合
- php探针哪个牌子好用(php探针使用原理和技巧讲解)
- php执行超时怎么办(PHP错误提示It is not safe to rely on the system……的解决方法)
- sql的ddl语句(使用sqlplus创建DDL和DML操作方法)
- python itchat库介绍(Python利用itchat库向好友或者公众号发消息的实例)
- pythonjson格式化原理(详解pythonstr与json类型转换)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9