在我的CakePHP应用程序中,我返回JSON并退出某些请求.这方面的一个例子是尝试作为GET请求访问登录API:
header('Content-Type: application/json');
echo json_encode(array('message'=>'GET request not allowed!'));
exit;
Run Code Online (Sandbox Code Playgroud)
但是我必须在回显前面添加内容类型,以便将其作为JSON发送.否则我在另一端的代码会将其解释为不同.
关于如何解决这个问题的任何想法?或至少改善它.
更新:Cake版本2.3.0
mar*_*ark 36
您可以利用新的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);
}
Run Code Online (Sandbox Code Playgroud)
见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()的代码进行单元测试.这将悲惨地结束.因此,最好不要在代码中首先使用它.
| 归档时间: |
|
| 查看次数: |
18414 次 |
| 最近记录: |