繁体   English   中英

为CakePHP发送正确的JSON内容类型

[英]Sending correct JSON content type for CakePHP

在我的CakePHP应用中,我返回JSON并退出某些请求。 一个示例是尝试作为GET请求访问用于登录的API:

header('Content-Type: application/json');
echo json_encode(array('message'=>'GET request not allowed!'));
exit;

但是,我必须在回声之前加上内容类型,才能将其作为JSON发送。 否则,我在另一端的代码将解释为不同的。

关于如何解决这个问题的任何想法? 或至少改善它。

更新:Cake版本2.3.0

您可以利用新的2.x响应对象:

public function youraction() {
    // no view to render
    $this->autoRender = false;
    $this->response->type('json');

    $json = json_encode(array('message'=>'GET request not allowed!'));
    $this->response->body($json);
}

参见http://book.cakephp.org/2.0/en/controllers/request-response.html#cakeresponse

您还可以使用强大的rest功能和RequestHandlerComponent来实现自动操作,如记录所示: http : //book.cakephp.org/2.0/en/views/json-and-xml-views.html

您只需要允许扩展名json并将您的操作称为/controller/action.json 然后cake将自动使用JsonView,您只需传递您的数组即可。它将由JSON和有效的响应由视图类生成。

两种方法都比您的“退出”解决方案更干净-尝试对包含die()/ exit()的代码进行单元测试。 这将悲惨地结束。 因此最好不要在代码中首先使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM