我正在设置FOSRestBundle并有一些疑问,不知道是否与Symfony2路由组件相关或者可以以任何其他方式完成。这里,
1)在执行方法之前,如何检查请求标头上是否设置了X-PDONE-SESSION-ID
?可以使用路由注释来完成吗?关于如何检查的任何想法?
2)我需要在路由\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]
中使用此RegEx requirements
作为@QueryParam(name="token", requirements="")
来检查有效网址,具体如何?
答案 0 :(得分:1)
(1)可以使用the book article you referenced as not being helpful:
中描述的方法完成正如您所见,可以使路由仅匹配某些路由通配符(通过正则表达式),HTTP方法或主机名。但是使用条件可以扩展路由系统以获得几乎无限的灵活性:
接触: 路径:/ contact 默认值:{_ console:AcmeDemoBundle:Main:contact} 条件:" context.getMethod()在[' GET',' HEAD']和request.headers.get(' User-Agent')匹配' /火狐/ I'"
条件是一个表达式,您可以在此处了解有关其语法的更多信息:The Expression Syntax。这样,除非HTTP方法是GET或HEAD,并且
User-Agent
标题与firefox匹配,否则路由不会匹配。
在(2)中,您显示完整URL的正则表达式而不仅仅是查询参数。据我所知,默认情况下无法更改路由组件使用的整个正则表达式。