在我的 CakePHP 应用程序中,我返回 JSON 并针对某些请求退出。例如,尝试通过 GET 请求访问 API 进行登录:
header('Content-Type: application/json');
echo json_encode(array('message'=>'GET request not allowed!'));
exit;
但是,我必须在 echo 前面加上内容类型前缀,以便将其作为 JSON 发送。否则我另一端的代码会对其进行不同的解释。
关于如何解决这个问题有什么想法吗?或者至少改进它。
更新:蛋糕版本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);
}
See http://book.cakephp.org/2.0/en/controllers/request-response.html#cakeresponse
您还可以使用强大的其余功能和 RequestHandlerComponent 来自动实现此目的,如文档所示:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html
您只需要允许扩展 json 并将您的操作调用为/controller/action.json
。
然后 cake 会自动使用 JsonView,你只需传入你的数组即可。它将被视图类生成 JSON 和有效响应。
这两种方法都比“退出”解决方案更干净 - 尝试对包含 die()/exit() 的代码进行单元测试。这将会以悲惨的方式结束。所以最好一开始就不要在代码中使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)