ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
新版ThinkPHP针对API开发做了很多的优化,并且不依赖原来的API模式扩展。 ## 数据输出 新版的控制器输出采用Response类统一处理,而不是直接在控制器中进行输出,通过设置`default_return_type`就可以自动进行数据转换处理,一般来说,你只需要在控制器中返回字符串或者数组即可,例如如果我们配置: ~~~ '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"} ~~~ > 如果你需要返回其他的数据格式的话,控制器本身的代码无需做任何改变。 核心支持的数据类型包括`html`、`text`、`json`和`jsonp`,其他类型的需要自己扩展,扩展方式为包括两种方式: 第一种方式是调用`Respone::tramsform`方法 ~~~ // 对输出数据设置data_to_xml处理函数(支持callable类型) \think\Response::tramsform('data_to_xml'); ~~~ 第二种方式是对`return_data`钩子使用行为扩展。 ~~~ // 定义行为类 \think\Hook::add('return_data','\app\index\behavior\DataToXml'); // 或者直接使用闭包函数处理 \think\Hook::add('return_data',function(&$data){ // 在这里对data进行处理 }); ~~~ ## 异常处理 在API开发的情况下,只需要设置好`default_return_type`,就能返回相应格式的异常信息,例如: ~~~ 'default_return_type'=>'json' ~~~ 当发生异常的时候,就会返回客户端一个json格式的异常信息,例如: ~~~ {"message":"\u53d1\u751f\u9519\u8bef","code":10005} ~~~ 然后由客户端决定如何处理该异常。 ## 错误调试 由于API开发不方便在客户端进行开发调试,但TP5通过整合SocketLog可以实现远程的开发调试。 设置方式: ~~~ 'log' => [ 'type' => 'socket', // socket服务器 'host' => '111.202.76.133', ], ~~~ 然后安装chrome浏览器插件后即可进行远程调试,详细参考调试部分。 ## IS_API常量 系统还预留了一个IS_API常量,用于后期API开发的深度优化。