首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在rest中检查传入的请求URL

如何在rest中检查传入的请求URL
EN

Stack Overflow用户
提问于 2022-03-25 13:42:35
回答 1查看 881关注 0票数 0

我有一个Rest,它接受用户的json输入,并与负载均衡器建立连接(TCP连接)。负载均衡器后面的服务器之一将处理请求并将响应发送回Rest。

Rest接受来自两个不同端点或URL的请求。目前,我有一个负载均衡器来处理来自两个端点的请求。我想再加一个负载均衡器。

在与负载均衡器建立连接的方法中,我希望检查URL并根据端点/URL将请求重定向到特定的负载均衡器。

例: URL1请求->重定向到负载平衡器1.

URL2请求->重定向到负载平衡器2.

EN

回答 1

Stack Overflow用户

发布于 2022-03-25 14:15:01

您可以根据请求的路径手动地将请求从客户端重定向到特定的LB,或者可以使用像这样的api网关。

手动重定向exmaple:

代码语言:javascript
运行
复制
@RequestMapping(value = { "/", " * " })
public ResponseEntity<?> redirectRequest(HttpServletRequest httpServletRequest) {
        String bodyRequest = "";
    String baseURL = "";
    if ("POST".equalsIgnoreCase(httpServletRequest.getMethod())
            || "PUT".equalsIgnoreCase(httpServletRequest.getMethod())) {
        try {
            bodyRequest = httpServletRequest.getReader().lines()
                    .collect(Collectors.joining(System.lineSeparator()));
        } catch (IOException e) {

        }
    }

    HttpEntity<?> request = new HttpEntity<>(bodyRequest);
    Enumeration<String> headerNames = httpServletRequest.getHeaderNames();

    if (headerNames != null) {
        while (headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            request.getHeaders().add(headerName, httpServletRequest.getHeader(headerName));
        }
    }

    if (httpServletRequest.getContextPath().contains("api/lb1"))
        baseURL = "lb ur1";
    else
        baseURL = "lb url 2";
    return restTemplate.exchange(baseURL + httpServletRequest.getContextPath(),
            HttpMethod.resolve(httpServletRequest.getMethod()), request, ResponseEntity.class,
            httpServletRequest.getRequestURI());

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71617934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档