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 相关文章推荐
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
TP3.2框架分页相关实现方法分析
Jun 03 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
菜鸟修复电子管记
2021/03/02 无线电
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
python 中split 和 strip的实例详解
2017/07/12 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
金融管理应届生求职信
2014/02/20 职场文书
搞笑创意广告语
2014/03/17 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
总经理致辞
2015/07/29 职场文书