ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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`浏览器插件后即可进行远程调试,详细参考调试部分。