CakePHP 3.x - 仅前缀中的扩展路由器

CakePHP 3.x - Extension router in prefix only

我正在开发一个应用程序,它有一个可供用户使用的端(仪表板)和一个后端端(API)。我希望 API 端有输出 JSON 的页面。多亏了 Cake,通过控制器的 $this->set('_serialize', [...]); 结合路由器设置,这变得很容易:Router::extensions(['json', 'xml']);。我使用前缀路由对 API 页面进行分组。

问题:如何让扩展路由中的API页面只支持*.json页面?

我尝试过的东西

前缀也是范围,只是具有附加功能(它基本上是 scope() 的 shorthand 方法并传递 prefix 选项)。事实上,即使没有通过 scope() 方法显式连接,每条路线都有范围。

使用传递给 prefix() 方法回调的路由生成器,正如文档中的 scope() 示例和您的问题所示:

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

并确保不要在任何地方使用 Router::extensions(['json', 'xml']);

另见