Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以转发更改请求方法的请求?_Java_Rest_Servlets - Fatal编程技术网

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

Java 是否可以转发更改请求方法的请求?,java,rest,servlets,Java,Rest,Servlets,我正在研究一个网关,它只允许GET请求,而它后面的REST端点能够接受广泛的方法(POST、PUT、DELETE、OPTIONS)。因此,我尝试将request方法作为参数传递,并使用一个过滤器,该过滤器使用正确的方法转发请求。从我在规范中看到的情况来看,只允许转发请求而不进行任何修改: request.getRequestDispatcher(route).forward(request, response) 有什么解决办法吗 注意:重定向对我来说不是一个选项。如果您有一个Rest serv

我正在研究一个网关,它只允许GET请求,而它后面的REST端点能够接受广泛的方法(POST、PUT、DELETE、OPTIONS)。因此,我尝试将request方法作为参数传递,并使用一个过滤器,该过滤器使用正确的方法转发请求。从我在规范中看到的情况来看,只允许转发请求而不进行任何修改:

request.getRequestDispatcher(route).forward(request, response)
有什么解决办法吗


注意:重定向对我来说不是一个选项。

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

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

无论如何,我认为你应该努力克服你的网关的局限性,因为它会让你陷入非常尴尬的境地