是否可以转发更改请求方法的请求?

我正在通过一个网关,它只允许GET请求,而它后面的REST端点能够接受各种方法(POST,PUT,DELETE,OPTIONS)。 因此,我试图将请求方法作为参数传递,具有filter,该filter使用正确的方法转发请求。 从我在规范中可以看到,它只允许转发请求没有任何修改:

request.getRequestDispatcher(route).forward(request, response) 

有没有解决方法?

注意:重定向不适合我。

如果您有一个Rest servlet来处理restful服务(通常就是这种情况),您可以扩展它并覆盖service方法。 在那里你可以根据你想要的参数调用doPost(..)doPut(..)等。 HttpServlet的默认实现使用request.getMethod()

您可以做的另一件事(不太可取)是让您的filter使用URL.openConnection (或apache commons http组件)向端点发出新请求,并将该内部请求的结果传回客户端。 在那里,您可以指定请求方法。

无论如何,我认为你应该尝试克服你的网关的限制,因为它让你处于一个非常尴尬的境地。