namespace app\index\controller;
use think\Request;
use think\Config;
classIndex
{
public function index(Request $request)
{
$res=[
'code'=>200,
'result'=>[
'list'=>[1,2,3,4,5]
]
];
Config::set('default_return_type','json');
return $res;
}
}
请求对象:request
响应对象:response
thinkphp5中不允许在方法中 die()
修改default_return_type 为xml 或者json
fe助手插件将页面的json数据直接格式化
Config::set('default_return_type',变量)
事先引入Config命名空间
格式返回1
请求对象:request
响应对象:response
thinkphp5中不允许在方法中 die()
修改default_return_type 为xml 或者json
fe助手插件将页面的json数据直接格式化
ThinkPHP5.1 增加facade类,Config要这么用
use think\facade\Config;
Config::set('app.default_return_type','json');//手册上写着 V5.1.18+版本以上,不再建议使用动态配置,由于容器的特性,可能不会生效。
在TP5.1控制器中直接return数组会报variable type error: array错误,要返回json应该这样
return json($res);
return xml($res);//返回xml格式
相应对象:response
参数传递type=xml
在開發中,通過參數傳遞來控制response的類型會更加靈活!
config.php
模块配置中 return[
'default_return_type' => 'json'
];
如果是xml 直接修改值xml
响应对象:
可在方法名中带一个参数:type
方法中判断请求类型:
if(!is_array($type,['json','jsonp','xml'])){$type = 'json';}
Config::set('default_return_type',$type);
响应对象返回格式
响应对象:
可在方法名中带一个参数:type
方法中判断请求类型:
if(!is_array($type,['json','jsonp','xml'])){$type = 'json';}
Config::set('default_return_type',$type);
use think\Config;
if(!in_array($type,['json','jsonp','xml'])){
$type = ‘json’;
}
Config::set('default_return_type' , $type);
config.php
模块配置中 return[
'default_return_type' => 'json'
];
如果是xml 直接修改值xml
namespace app\api\controller;
use think\Config;
class Index
{
public function getUserInfo($type='json')
{
if (!in_array($type, ['json','xml'])){
$type='json';
}
Config::set('default_return_type',$type);
$data=[
'code'=>200,
'result'=>[
'username'=>'sunxiaopeng',
'useremail'=>'1212@163.com'
]
];
return $data;
}
}
但一般用配置文件来定义api接口文件的方式不太理想,会在api中加入 $type的形式。
那么想获取不同形式的返回,直接在域名中如: xxx.com/index.html?type=xml 即可获得xml格式。
如果api直接return数组,会报错,因为默认返回的是html,那么可以通过动态config的方式设置为json,同时也可以在 conf文件夹里面 新建一个 api文件夹及 config.php,那么这个config.php只作用于 app\api下,那么api控制器就可以全部直接返回json类型了。
动态配置返回类型为json,用Config::set('default_return_type', 'json');
安装FE助手,可以让浏览器如果是json格式,自动格式化。
thinkphp5 中不允许在控制器或控制器方法中进行die()操作,可能会影响response对象的返回
如果要在页面上打印一个数据或一个字符串 除 使用dump()函数外,还可以直接return要输出的值
输出默认是一个html格式
在方法中可以通过设置 Config::set("default_return_type","Json");来修改输出在页面的值在方法中可以调用 Config::set("default_return_type","Json");等,返回的数组会返回对应的格式。
可以在conf文件中创建对应模块的配置文件进行配置,也可以在方法内传递参数配置。
但是实际开发中会在入口文件或者构造方法来统一的修改访问类型
参考笔记:https://www.imooc.com/notepad/200af6
可以在conf文件中创建对应模块的配置文件进行配置,也可以在方法内传递参数配置。但是实际开发中会在入口文件或者构造方法来统一的修改访问类型
<?php return [ 'default_return_type' =>'xml' ];
特殊封装,不需要在每个方法里都传递这样的参数,可以通过入口/构造方法来统一修改返回类型
响应对象Response
1.针对某一个模块返回其他格式类型,那么需要给在conf文件中创建对应模块的配置文件config.php中配置default_return_type
2.针对某一个操作返回特殊的类型,那么可以通过动态配置实现
在TP5中不允许在控制器和方法里die(),因为响应有可能发生问题
一般在控制器里面直接return 数据,默认格式为html,默认会调用response对象出输出数据,如果需要对数据格式进行修改,第一种在config.php中修改,这个设置全局的,如果想对某个控制器的数据进行修改,一般在控制器里面动态设置返回格式
<?php
namespace app\api\controller;
use think\Config;
class Index
{
public function getUserInfo($type='json')
{
if(!in_array($type,['json','jsonp','xml']))
{
$type = 'json';
}
Config::set('default_return_type',$type);//动态配置,这样就不用修改配置文件,可以通过同一个方法返回不同的响应对象
$data = [
'code'=>200,
'result'=>[
'username'=>'rui',
'email'=>'123@qq.com',
'gender'=>'female'
]
];
return $data;
//html返回的是字符串,当前返回的是数组,无法解析
}
}<?php
namespace app\index\controller;
use think\Request;
use think\Config;
class Index
{
public function index(Request $request)
{
$res = [
'code'=> 200,
'result'=>[
'list' =>[1,2,3,4,5,6]
]
];
Config::set('default_return_type','xml');
return $res;
//dump($res);
}
}
可以在conf文件中创建对应模块的配置文件进行配置,也可以在方法内传递参数配置。但是实际开发中会在入口文件或者构造方法来统一的修改访问类型
<?php
return [
'default_return_type' =>'xml'
];特殊封装,不需要在每个方法里都传递这样的参数,可以通过入口/构造方法来统一修改返回类型
响应对象Response
1.针对某一个模块返回其他格式类型,那么需要给在conf文件中创建对应模块的配置文件config.php中配置default_return_type
2.针对某一个操作返回特殊的类型,那么可以通过动态配置实现
在TP5中不允许在控制器和方法里die(),因为响应有可能发生问题
一般在控制器里面直接return 数据,默认格式为html,默认会调用response对象出输出数据,如果需要对数据格式进行修改,第一种在config.php中修改,这个设置全局的,如果想对某个控制器的数据进行修改,一般在控制器里面动态设置返回格式
<?php
namespace app\api\controller;
use think\Config;
class Index
{
public function getUserInfo($type='json')
{
if(!in_array($type,['json','jsonp','xml']))
{
$type = 'json';
}
Config::set('default_return_type',$type);//动态配置,这样就不用修改配置文件,可以通过同一个方法返回不同的响应对象
$data = [
'code'=>200,
'result'=>[
'username'=>'rui',
'email'=>'123@qq.com',
'gender'=>'female'
]
];
return $data;
//html返回的是字符串,当前返回的是数组,无法解析
}
}
<?php
namespace app\index\controller;
use think\Request;
use think\Config;
class Index
{
public function index(Request $request)
{
$res = [
'code'=> 200,
'result'=>[
'list' =>[1,2,3,4,5,6]
]
];
Config::set('default_return_type','xml');
return $res;
//dump($res);
}
}
编写接口文件时,如果可以通过设置default_return_type来动态修改返回值的类型,
若地址栏中输入 http://localhost/api/Index/getUserInfo?type=json
则在api模块下的Index控制器 getUserInfo方法中,只需写如下格式:
public function getUserInfo($type='json'){
//$type参数不需要使用get即可直接获取到
//若要调用Config方法,则必须通过 use think\Config命名空间加载Config类
Config::set('default_return_type',$type);
$arr=[
'username'=>'aaaa'
];
return $arr;
}
thinkphp5 中不允许在控制器或控制器方法中进行die()操作,可能会影响response对象的返回
如果要在页面上打印一个数据或一个字符串 除 使用dump()函数外,还可以直接return要输出的值
输出默认是一个html格式
在方法中可以通过设置 Config::set("default_return_type","Json");来修改输出在页面的值