根据文档,过滤器链发生在请求被路由之后。有没有办法在请求被路由之前应用过滤器链?
特别是,我们希望在 URL 映射之前应用一些过滤器。如果我们将这些作为普通过滤器执行,则要么我们不能使用路由时发生的请求绑定,要么我们必须自己在操作中执行此操作。
根据文档,过滤器链发生在请求被路由之后。有没有办法在请求被路由之前应用过滤器链?
特别是,我们希望在 URL 映射之前应用一些过滤器。如果我们将这些作为普通过滤器执行,则要么我们不能使用路由时发生的请求绑定,要么我们必须自己在操作中执行此操作。
是的,
onRouteRequest(Http.RequestHeader request)
Called when an HTTP request has been received.
You need a class to extends GlobalSettings,
and then override the method onRouteRequest(Http.RequestHeader request)
从文档中:“如果您确实需要在调用路由器之前修改请求,那么更好的方法是将您的逻辑放在 Global.onRouteRequest 中。”
在较新版本的 Play(例如 2.6.x)中,在路由之前应用自定义逻辑的首选方法是实现自定义HttpRequestHandler(请参阅此页面以获取 Java 版本的文档HttpRequestHandler
)。
在许多情况下,您可以扩展默认请求处理程序并覆盖该routeRequest
方法。
从过滤器文档中:
如果您确实需要在调用路由器之前修改请求,则更好的方法是将您的逻辑放入其中
HttpRequestHandler
。