// MySomethingController.php
// look no s
public function getSomethingAction($args)
{
...
}
// routing.yml
my_something:
type: rest
resource: Blah\Bundle\BlahBundle\Controller\MySomethingController
运行:
php app/console router:debug
输出:
[router] Current routes
Name Method Pattern
get_something GET /somethings/{args}.{_format}
为什么路线''somethings'(复数带有's')而不是'某事'?
这是我在某处的设置吗?或者这是预期的吗?
答案 0 :(得分:3)
:
这是:
private function generateUrlParts(array $resources, array $arguments)
{
$urlParts = array();
foreach ($resources as $i => $resource) {
// if we already added all parent routes paths to URL & we have
// prefix - add it
if (!empty($this->routePrefix) && $i === count($this->parents)) {
$urlParts[] = $this->routePrefix;
}
// if we have argument for current resource, then it's object.
// otherwise - it's collection
if (isset($arguments[$i])) {
if (null !== $resource) {
$urlParts[] =
strtolower(Pluralization::pluralize($resource))
.'/{'.$arguments[$i]->getName().'}';
} else {
$urlParts[] = '{'.$arguments[$i]->getName().'}';
}
} elseif (null !== $resource) {
$urlParts[] = strtolower($resource);
}
}
return $urlParts;
}
我已经开了一个问题:
希望这会成为可选的
答案 1 :(得分:3)
这是基于@phillpafford打开的门票的更新答案。
机票上有Ismith77 commented,我认为原因很清楚:
如果没有复数,我们就不会知道它们之间的关系 这种方法在例如何时非常重要 实施#52。此外,它是我们拥有的REST的关键理念 集合中的单个元素的GET位于的“子目录”中 收藏本身。
因此,如果您执行“正确”的REST,那么/member/{id}.{_format}将会很奇怪 如果您的收藏品本身就会被命名,但实际上是错的 然后也不会驻留在/member {.format}下。
所有这一切的要点是......解决方案不是那么多 方便而不是强制人们实际遵循REST 原理
PS:不过我想指出的是,当你有一个像“数据”这样的词时,它本身就是复数,这有点烦人......