我正在创建一个仅会获取和返回JSON数据的REST api。
我正在遵循蛋糕指南,而我的默认路线是这样的:
GET /recipes.format
GET /recipes/123.format
POST /recipes.format
PUT /recipes/123.format
DELETE /recipes/123.format
POST /recipes/123.format
但是,我真的不喜欢使用“.format”(在我的情况下为“.json”)的必要性,因为我将永远只接受json。
我觉得必须有一种方法来消除这种必要性。我可以使用.htaccess重写URLS,但是我觉得必须在某个地方的蛋糕设置/配置文件中有某种方法可以做到这一点。
简而言之,我想成为
GET /recipes
的安倍晋三,并让它输出与GET /recipes.json
相同的东西。谢谢!
最佳答案
我假设您正在使用 RequestHandler
component。一种方法是在 Controller beforeFilter()
回调中对extension进行硬编码:
public function beforeFilter()
{
parent::beforeFilter();
$this->RequestHandler->ext = 'json';
}
这样,即使启用了extension parsing并且URL中提供了非.json扩展名,它也将始终使用JSON View和适当的响应 header 。
另一种选择是在单个 Controller 操作中使用
RequestHandlerComponent::renderAs()
:public function index()
{
$this->RequestHandler->renderAs($this, 'json');
...
}
这将具有相同的效果,但是您需要在所有操作中都执行此操作,因此,如果 Controller 的唯一目的是处理REST请求,则最好改写扩展。
关于json - Cakephp REST API消除了.format的必要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202294/