我有两个动作:
/**
* @Rest\Get("/items/{itemId}")
*/
public function getAction(UuidInterface $id): View
和
/**
* @Rest\Get("/items/available")
*/
public function getAvailableAction() : View
问题是,当我尝试通过链接items/available
调用getAvailableAction时,将调用getAction。我猜想它会以某种原因将可用字词解释为{itemId}
。
我应该如何解决?
答案 0 :(得分:3)
您猜对了。只需定义一个适当的要求即可:
/**
* @Rest\Get("/items/{itemId}", requirements={"itemId" = "\d+"})
*/
如果您的itemId
是UUID,请将数字正则表达式从\d+
更改为[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
或简化的[a-fA-F0-9\-]{36}
。
别忘了清除缓存。