thinkPHP5.0框架API优化后的友好性分析


Posted in PHP onMarch 17, 2017

本文实例讲述了thinkPHP5.0框架API优化后的友好性。分享给大家供大家参考,具体如下:

新版ThinkPHP针对API开发做了很多的优化,并且不依赖原来的API模式扩展。

数据输出

新版的控制器输出采用Response类统一处理,而不是直接在控制器中进行输出,通过设置default_return_type或者动态设置不同类型的Response输出就可以自动进行数据转换处理,一般来说,你只需要在控制器中返回字符串或者数组即可,例如如果我们配置:

'default_return_type'=>'json'

那么下面的控制器方法返回值会自动转换为json格式并返回。

namespace app\index\controller;
class Index
{
  public function index()
  {
    $data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];
    return ['data'=>$data,'code'=>1,'message'=>'操作完成'];
  }
}

访问该请求URL地址后,最终可以在浏览器中看到输出结果如下:

{"data":{"name":"thinkphp","url":"thinkphp.cn"},"code":1,"message":"\u64cd\u4f5c\u5b8c\u6210"}

如果你需要返回其他的数据格式的话,控制器本身的代码无需做任何改变。

支持明确指定输出类型的方式输出,例如下面指定JSON数据输出:

namespace app\index\controller;
class Index
{
  public function index()
  {
    $data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];
    // 指定json数据输出
    return json(['data'=>$data,'code'=>1,'message'=>'操作完成']);
  }
}

或者指定输出XML类型数据:

namespace app\index\controller;
class Index
{
  public function index()
  {
    $data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];
    // 指定xml数据输出
    return xml(['data'=>$data,'code'=>1,'message'=>'操作完成']);
  }
}

核心支持的数据类型包括view、xml、json和jsonp,其他类型的需要自己扩展。

错误调试

由于API开发不方便在客户端进行开发调试,但ThinkPHP5的Trace调试功能支持Socket在内的方式,可以实现远程的开发调试。

设置方式:

'app_trace' => true,
'trace'   => [
  'type'       => 'socket',
  // socket服务器
  'host'       => 'slog.thinkphp.cn',
],

然后安装chrome浏览器插件后即可进行远程调试,详细参考调试部分。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
php调用C代码的实现方法
Mar 11 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
php实现的验证码文件类实例
Jun 18 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 PHP
php中数组最简单的使用方法
Dec 27 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 #PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 #PHP
PHP中类的自动加载的方法
Mar 17 #PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 #PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 #PHP
php正则判断是否为合法身份证号的方法
Mar 16 #PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 #PHP
You might like
Twig模板引擎用法入门教程
2016/01/20 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
发现的以前不知道的函数
2006/09/19 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
jQuery的框架介绍
2016/05/11 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
用python登录Dr.com思路以及代码分享
2014/06/25 Python
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
django实现分页的方法
2015/05/26 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
2014年司机工作总结
2014/11/21 职场文书
中学社团活动总结
2015/05/07 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书