问题描述
我需要向现有的 Spring Boot 应用程序添加简单的请求转发功能。
目前我有后端 zeppelin 服务器,由于某些限制,我无法直接访问 zeppelin url,所以我需要添加一个可以将请求路由到 zeppelin 服务器的代码,如下所示
浏览器-->Spring-boot(proxy)-->Zeppelin
我的简单代理代码
@Controller
@RequestMapping("/proxy")
public class SimpleController {
@GetMapping("/**",produces = "application/json")
public ResponseEntity<String> getUsers(HttpServletRequest request) {
String url = request.getRequestURI();
url = url.replace("proxy","");
return sendRequestusingRestTemplate(url,request);
}
}
public ResponseEntity<String> sendRequestusingRestTemplate(String url,HttpServletRequest requestrequest)
{
RestTemplate restTemplate = new RestTemplate();
String zeppelinServerUrl = "http://192.168.1.34:8080/"+url;
restTemplate.getForEntity(zeppelinServerUrl,String.class);
URI uri = new URI(zeppelinServerUrl);
HttpHeaders headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames();
headerNames.asIterator().forEachRemaining(header -> {
headers(header,request.getHeader(header);
});
httpentity<String> requestEntity = new httpentity<>(null,headers);
return restTemplate.exchange(uri,HttpMethod.GET,requestEntity,String.class)
}
它一直工作到一些请求,但作为 zeppelin ui 的一部分,它尝试打开一个 websocket 到后端服务器,所以当浏览器发送连接升级请求时它不起作用。
是否有一种简单的方法可以为此添加路由,或者我需要将请求作为 webscoket 客户端重新路由到我的后端服务器
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)