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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
phplot生成图片类用法详解
Jan 06 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
php把文件设置为插件的技巧方法
Feb 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
PHP 图片水印类代码
2012/08/27 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
利用PHP实现短域名互转
2013/07/05 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
详解php的socket通信
2015/08/11 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python 26进制计算实现方法
2015/05/28 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python代码编写计算器小程序
2020/03/30 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
python中round函数如何使用
2020/06/19 Python
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
模具专业推荐信
2013/10/30 职场文书
会计演讲稿范文
2014/05/23 职场文书
爱护公共设施的标语
2014/06/24 职场文书
百家讲坛观后感
2015/06/12 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android