0

我正在设置 FOSRestBundle 并且有一些疑问,不知道是否与 Symfony2 Routing 组件相关或者可以通过任何其他方式完成。这里,

1)如何X-PDONE-SESSION-ID在执行方法之前检查是否在请求标头上设置了?这可以使用路由上的注释来完成吗?关于如何检查的任何想法?

2)我需要在路由\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]中使用这个正则表达式来检查有效的 URL,如何?requirements@QueryParam(name="token", requirements="")

我在这里这里读过,但根本没有帮助。

4

1 回答 1

1

(1)可以使用您引用的书中文章中描述的方法来完成,因为它没有帮助

如您所见,可以使路由仅匹配某些路由通配符(通过正则表达式)、HTTP 方法或主机名。但是路由系统可以扩展为具有几乎无限的灵活性,使用条件:

联系人:路径:/contact 默认值:{ _controller: AcmeDemoBundle:Main:contact } 条件:“context.getMethod() in ['GET', 'HEAD'] 和 request.headers.get('User-Agent') 匹配' /火狐/我'"

条件是一个表达式,您可以在此处了解有关其语法 的更多信息:表达式语法。这样,除非 HTTP 方法是 GET 或 HEAD 并且User-Agent标头与 firefox 匹配,否则路由将不匹配。


在 (2) 中,您显示了完整 URL 的正则表达式,而不仅仅是查询参数。据我所知,默认情况下无法更改路由组件使用的整个正则表达式。

于 2015-05-14T21:06:58.653 回答