2015-11-03 103 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