我想使用类似以下的URL构建RESTful API:
第一条路线:http://example.com/api/ {element_name} / aaa / {related_name}和 第二条路线:http://example.com/api/ {element_name} / bbb / {related_name}。
当element_name为整数或简单文本时,一切都很简单。 当参数{element_name}的名称中带有“ /” char时,事情就变得复杂了,因为即使我用%2f(URL编码)对/进行编码,路由也会在进程路由之前对%2f进行解码。
例如,当我想为第一个敌人生成URL且我有{element_name} = xyz和{related_name} = ooo时,URL将为http://example.com/api/xyz/aaa/ooo并且没关系。
但是当我有{element_name} = xyz / bbb和{related_name} = ooo时,URL应该是:http://example.com/api/xyz%2fbbb/aaa/ooo,但首先路由将解码URL并生成:http://example.com/api/xyz/bbb/aaa/ooo,但不是好的,因为与第一条路线不匹配。
我应该怎么做?
答案 0 :(得分:0)
您需要做的就是在控制器中配置路由时添加要求。像这样:
class DefaultController
{
/**
* @Route("/share/{token}", name="share", requirements={"token"=".+"})
*/
public function share($token)
{
// ...
}
}
它在SF文档中进行了说明:http://symfony.com/doc/current/routing/slash_in_parameter.html