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 相关文章推荐
一个基于PDO的数据库操作类
Mar 24 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP函数超时处理方法
Feb 14 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
Laravel如何自定义command命令浅析
Mar 23 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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中的登陆login
2007/01/18 PHP
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
php 301转向实现代码
2008/09/18 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
javascript知识点收藏
2007/02/22 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
安装docker-compose的两种最简方法
2019/07/30 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
物理专业大学生职业生涯规划书
2014/02/07 职场文书
地理教师岗位职责
2014/03/16 职场文书
2016大学军训心得体会
2016/01/11 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL