Php Codeigniter4-默认情况下以JSON而不是XML的形式返回数组数据

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'); }

我只是在尝试使用新的CodeIgniter4框架。我创建了一个路由并将其附加到一个简单的方法
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
    ];