【发布时间】:2015-07-31 18:44:18
【问题描述】:
我们有一些 REST 端点(例如,/getalleuropeancars 或 /getalljapanesecars 或 /getallamericancars)。这些端点都是 GET only。
现在,每个带注释的端点类都有自己的代码来检查未经授权的方法(除了 GET 之外的所有方法)。我们希望一个类来处理所有未经授权的方法;你知道,代码重用等等。
过滤器能否区分“GET /getalleuropeancars”和“POST /getalleuropeancars”和“DELETE /getalleuropeancars”并重定向到正确的位置?看 servlet 过滤器,似乎只能检测不同的 URL 路径,不能检测不同的 HTTP 方法。
<url-pattern>/getalleuropeancars</url-pattern>
<url-pattern>/getalljapanesecars</url-pattern>
<url-pattern>/getallamericancars</url-pattern>
那么,我们需要一个 servlet 过滤器吗?
【问题讨论】:
-
HttpServletRequest有一个getMethod方法,它会告诉你它的类型。 -
感谢您的回答,但我正在尝试查看过滤器是否可以确定HTTP方法。
-
是的,过滤器可以访问
HttpServletRequest,它可以调用getMethod方法来检查它是否是GET或其他任何东西。如果是别的,它可以用 405 响应。 -
但是,我使用的是 web.xml 转发到带注释的 Java 类。有人告诉我,我需要一个 servlet 过滤器来过滤 HTTP 方法,但我看不到两者是如何连接的。
-
SotiriosDelimanolis 已经告诉过你(两次)。您误解了过滤器可以检测到的内容以及 web.xml 配置可以配置的内容。过滤器可以检测到方法(通过使用请求的getMethod()),即使在web.xml中无法配置。
标签: java rest servlet-filters