我正在通过一个网关,它只允许GET请求,而它后面的REST端点能够接受各种方法(POST,PUT,DELETE,OPTIONS)。因此,我试图将请求方法作为参数传递,具有过滤器,该过滤器使用正确的方法转发请求。从我在规范中看到的情况来看,它只允许转发请求而不进行任何修改:
request.getRequestDispatcher(route).forward(request, response)
有任何变通方法吗?
注意:重定向不适合我。
答案 0 :(得分:1)
如果您有一个Rest servlet来处理restful服务(通常就是这种情况),您可以扩展它并覆盖service
方法。在那里,您可以根据所需的参数调用doPost(..)
,doPut(..)
等。 HttpServlet
的默认实施使用request.getMethod()
。
您可以做的另一件事(不太可取)是让您的过滤器使用URL.openConnection
(或apache commons http组件)向端点发出新请求,并将该内部请求的结果传回给客户。在那里,您可以指定请求方法。
无论如何,我认为你应该尝试克服网关的限制,因为它会让你处于一种非常尴尬的境地。