【问题标题】:removing compulsary .json extension for API Controller删除 API 控制器的强制 .json 扩展名
【发布时间】:2015-11-03 20:01:23
【问题描述】:

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

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

我使用 crud 插件,我的路线看起来像:

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

使用 CakePhp 3。我是蛋糕新手,非常感谢所有帮助。

【问题讨论】:

  • 您可以使用请求处理程序组件并在应用控制器 beforeFilter if(!$this->request->is('xml')) { $this->RequestHandler->renderAs($this, 'json'); } 中执行类似操作

标签: php cakephp cakephp-3.0


【解决方案1】:

它不是强制性的,它只是一个调试和快速开发的工具。获取 json 响应的正确方法是告诉 Cake 你想要使用 HTTP 标头的 json 响应。

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

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

您也可以强制忽略控制器中的标题:

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

【讨论】:

  • 非常感谢,请求正确的响应类型就是解决方案。不知何故,设置 renderAs 不起作用,没有任何类似的尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多