json - Cakephp REST API消除了.format的必要性

标签 json api rest cakephp-2.0

我正在创建一个仅会获取和返回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/

相关文章:

json - jq 将过滤器的结果包含在新过滤器中

rest - Acumatica REST API - 删除 SalesOrderDetail

ruby-on-rails-3 - Rails API的基本身份验证

sql-server - Azure 是否有适用于 Ms SQL DB 的 REST API 服务/包装器?

python - 字符串转 Json Python

android - 使用 GSON 从嵌套 json 获取数据

php - Google Calendar API PHP listEvents 不检索所有事件

javascript - 何时在 AngularJS 中使用 PATCH 和 PUT

java - 允许斜杠的 JAX-RS @Path 与其他资源发生冲突

Javascript omdb api不会发送所有信息