2015-11-03 105 views
0

有没有办法从url中删除强制.json扩展?例如,我有一条路线/api/1.0/users.json,我想只有/api/1.0/users,它只是显示警告,我没有设置索引模板。删除API控制器的强制扩展.json扩展

理想情况下,我希望保持选项同时具有XML和JSON输出,有点json作为默认值,不需要.json扩展名。

我用的CRUD插件和我的路线是这样的:

Router::prefix('api', function ($routes) { 
    $routes->extensions(['json', 'xml']); 
    $routes->resources('Users'); 
}); 

使用CakePHP 3.我是新来的蛋糕,因此所有帮助是非常赞赏。

+1

您可以使用请求处理程序组件,做这样的事情在应用程序控制器beforeFilter 'if(!$ this-> request-> is('xml')){this-> RequestHandler-> renderAs($ this,'json'); }' – chrisShick

回答

2

这不是强制性的,它只是调试和快速开发的工具。获得json响应的正确方法是告诉Cake你需要使用HTTP头进行json响应。

只需在请求中发送Accept: application/json标题即可。当使用jquery,这样做:

$.ajax({url: '...', dataType: 'json', ...}) 

您还可以强制忽略控制器标题:

$this->RequestHandler->renderAs($this, 'json'); 
+0

非常感谢,请求正确的响应类型是解决方案。不知何故,设置渲染器不起作用,没有任何类似的尝试。 – EarlGrey