我有一个SpringRest控制器:
@RestController
@RequestMapping("v1/employee")
public class controller1 {
getMethod(@PathVariable String param1, String param2){}
postMethod(){}
}
我想引入一个新的endpoint版本v2
,它解析参数:param1、param2并转发到v1
请求URL。
我希望新客户端能够调用v2
,而旧客户端仍然能够调用v1
终结点。我看了拦截器和过滤器。所以我要么,
有更好的方法吗?谢谢
这实际上取决于应用程序的性质
首先,控制器应该只封装与HTTP相关的内容,因此业务逻辑可能是在服务中实现的。
如果是这样,那么就不需要重定向请求。如果您谈论的是同一个java应用程序,那么最好将服务注入新的控制器并调用它。
class OldController {
MyService srv;
@GetMapping(...)
public oldGet() {
srv.doSomething();
}
}
class NewController {
MyService srv;
@GetMapping(...)
public newGet() {
srv.doSomething();
//or
srv.doSomethingElse();
}
}
至于路由,您甚至可以在外部执行(例如在某种代理中为您执行url重写,并重定向到正确的控制器,甚至可以驻留在不同的服务器上)。解决方案如下:
还有其他的
主要内容:请求转发,request 域对象,示例Web 应用在处理客户端的请求时,经常需要多个 Web 资源共同协作才能生成响应结果。但由于 Serlvet 对象无法直接调用其他 Servlet 的 service() 方法,所以 Servlet 规范提供了 2 种解决方案: 请求转发 请求包含(了解即可) 下面我们主要对请求转发进行介绍。 请求转发 请求转发属于服务器行为。容器接收请求后,Servlet 会先对请求做一些预处理,然后将请求传递
我有一个小应用程序(HTML表单、servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。 问题是从html提交后,显示“HTTP状态404” null 谢谢! 项目层次结构:http://s23.postimg.org/kgt7r7lwb/capture.jpg main.html: 更新:问题可能出在Controller.java。当我尝试下面的
主要内容:请求转发,重定向,2. 通过 ModelAndView 实现重定向Spring MVC 是对 Servlet 的进一步封装,其本质就是一个 Servlet,因此在 Spring MVC 中也存在转发和重定向的概念。 在 Spring MVC 中,我们可以在逻辑视图名中通过“forward:”和“redirect:”两个关键字来表示转发和重定向。 请求转发 我们可以在控制器方法指定逻辑视图名(View Name)时,使用“forward:”关键字进行请求转发操作。
我有一个带有Rest控制器的Spring启动应用程序,它将接受来自外部方A的超文本传输协议请求。 我想将此请求转发给另一方B。需要捕获来自B响应的数据,然后转发回A。 我最初的想法是通过RestTemplate发出另一个请求,等待响应,捕获必要的数据,然后转发回A。 我只是想知道是否有更巧妙的方法? 提亚
发送请求 发送同步请求 Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send(); String clientVersion = web3Client
构建 Web 应用时,把请求转发给另一个 servlet 处理、或在请求中包含另一个 servlet 的输出通常是很有用的。RequestDispatcher 接口提供了一种机制来实现这种功能。 当请求启用异步处理时,AsyncContext 允许用户将这个请求转发到servlet 容器。