我想知道是否可以在FOSRestBundle方法中定义路由,这些路由使用除了前面的“点”之外的其他内容来指定格式。
例如,假设我希望以下工作:
http://somesite.com/api/user/20 (renders in the default/fallback format)
http://somesite.com/api/user/20/json (renders in JSON)
http://somesite.com/api/user/20/xml (renders in XML)
如果我尝试定义如下路线:
/**
* @Get("/user/{id}/{_format}
*/
public function getUserAction($id)
{
// do stuff
}
我明白了:
Route pattern "/api/users/{maximum}/{_format}.{_format}" cannot reference variable name "_format" more than once.
这让我意识到它 - 并且由此我假设我们正在谈论FOSRestBundle而不是默认的Symfony2 - 自动将“。{_ format}”添加到我定义的任何路径的末尾。我很惊讶!
现在,在我之前的例子中,它的工作原理如下:
http://somesite.com/api/user/20 (renders in the default/fallback format)
http://somesite.com/api/user/20.json (renders in JSON)
http://somesite.com/api/user/20.xml (renders in XML)
确实存在一个小差异,但是,我正在尝试移植使用此语法的旧应用程序。我正在尝试做什么?如果是这样,我怎样才能禁止在每条路线上自动添加“。{_ format}”?
谢谢!
答案 0 :(得分:6)
一年过去了,FOSRestBundle现在支持我上面寻找的功能。
您可以通过以下配置控制此行为:
fos_rest:
routing_loader:
default_format: ~
include_format: true
将include_format
设置为false
以从路线中删除格式。
您可以查看FOSRestBundle here的扩展配置选项。