Php Codeigniter4-默认情况下以JSON而不是XML的形式返回数组数据
我只是在尝试使用新的CodeIgniter4框架。我创建了一个路由并将其附加到一个简单的方法Php Codeigniter4-默认情况下以JSON而不是XML的形式返回数组数据,php,json,codeigniter,Php,Json,Codeigniter,我只是在尝试使用新的CodeIgniter4框架。我创建了一个路由并将其附加到一个简单的方法todos,当我尝试点击URL时,该方法应该以JSON的形式返回一个todos列表(任务),但它以XML格式返回。 代码很简单 class Home extends BaseController { use ResponseTrait; public function index() { return view('welcome_message'); }
todos
,当我尝试点击URL时,该方法应该以JSON的形式返回一个todos列表(任务),但它以XML格式返回。
代码很简单
class Home extends BaseController
{
use ResponseTrait;
public function index()
{
return view('welcome_message');
}
public function todos()
{
return $this->respondCreated(['todos' => ['task' => 'Check out new CI4']]);
}
//--------------------------------------------------------------------
}
//结果
<response>
<todos>
<task>Check out new CI4</task>
</todos>
</response>
那么我的问题是,是否有一种方法可以在CI4浏览器中默认返回JSON格式的数组?
我正在使用的CI版本:v4.0.2您请求的是xml响应,因此CI4将提供您所请求的内容。在返回响应之前,应该定义http头以请求json
public function todos()
{
$this->request->setHeader('Accept', 'application/json');
return $this->respondCreated(['todos' => ['task' => 'Check out new CI4']]);
}
注意:如果您总是想要json响应,您可以转到app/Config/Format.php
并注释掉一行,这样您的$supportedResponseFormats
变量如下所示:
public $supportedResponseFormats = [
'application/json',
// 'application/xml', // machine-readable XML
'text/xml', // human-readable XML
];
问题是您正在移除CI4以这种方式处理xml响应的能力
有关更多详细信息,请查看CI4优秀文档:您的解决方案有效。我读过文件,但我想没有那么清楚地提到。
public $supportedResponseFormats = [
'application/json',
// 'application/xml', // machine-readable XML
'text/xml', // human-readable XML
];