从 servlet 过滤器中检索 REST URL 模式

Posted

技术标签:

【中文标题】从 servlet 过滤器中检索 REST URL 模式【英文标题】:Retrieving the REST URL pattern from a servlet filter 【发布时间】:2014-06-13 18:16:13 【问题描述】:

我创建了一个带有以下 url 模式的休息服务

/author/authorId/book/bookId

在运行时我可以通过以下路径访问服务

/author/1234/book/1001

现在我定义了一个ServletFilter。每个访问url/author/1234/book/1001 的请求也都在过滤。在这个过滤器中,我如何找到传入请求的 url 模式,即/author/authorId/book/bookId

问候 -阿尔宾

【问题讨论】:

可能重复***.com/questions/4389596/… HttpServletRequest.getRequestURI() @vikeng21 与其他问题的不同之处在于我正在寻找请求 url 模式而不是请求 url。 【参考方案1】:

首先找到请求的真实路径。那就是requested_uri - context_path

String uri = req.getRequestURI();
String context = req.getContextPath();
String realPath = uri.substring(context.length());

然后使用正则表达式提取 authorId 和 bookId

【讨论】:

它没有为我提供 url 模式。它给了我请求 uri 而不是 url 模式。我正在编写的过滤器对于服务列表是通用的。所以我将无法使用正则表达式来提取 authorId 和 bookId。

以上是关于从 servlet 过滤器中检索 REST URL 模式的主要内容,如果未能解决你的问题,请参考以下文章

带有变量的 Servlet 映射(Tomcat 7.0)

在 servlet 过滤器中排除特定 URL

登录后检索CAS票证

Django REST Framework 中的否定或排除过滤器

servlet 过滤器重写 URL

在 REST Web 服务中使用 URL 模式作为 /*?