代码之家  ›  专栏  ›  技术社区  ›  badnun872

通过注释在Quarkus中进行转发(启用客户端路由)的请求或响应过滤器

  •  0
  • badnun872  · 技术社区  · 1 年前

    我使用Quarkus(3.4.3)来托管我的后端休息端点以及我的Angular SPA,这只是一个非常简单的接口,可以与这些休息端点进行实际交互。

    事实上,我的问题很常见。我需要客户端转发才能工作,这样我就可以直接访问例如。https://host:8080/home.

    我知道,由于服务器上没有主资源,我需要将请求重定向到index.html(https://host:8080/)同时保持URL中的归属部分以供客户端侧进行转发。

    作为一种解决方案,我希望通过注释使用请求或响应过滤器(如上所述 https://quarkus.io/guides/resteasy-reactive )。我还发现了另一个使用ContainerResponseFilter的解决方案( https://marcelkliemannel.com/articles/2022/routes-forwarding-for-javascript-frontends-in-quarkus/ )。

    不幸的是,我无法使用ContainerResponseFilter解决方案,因为HttpResponse转发部分似乎已经过时/不正确(这些方法在任何可用的HttpResponse类中都不存在)。

    无论如何,我更喜欢使用注释方法,但我就是找不到正确实现它的方法。

    当我尝试@ServerRequestFilter(preMatching=true)时,问题是我不知道如何重定向/转发用户(requestContext.setRequestUri什么都不做)。

    @ServerRequestFilter(preMatching = true)
        public void preMatchingFilter(ContainerRequestContext requestContext) {
            URI newLocation = URI.create("http://host:8080/");
            requestContext.setRequestUri(newLocation);
        }
    

    对于@ServerResponseFilter,问题在于此时已经写入了响应。

    有人能给我看一个如何转发请求的简单例子吗https://host:8080/home到https://host:8080/同时保留路径/主页,以便进行客户端路由?

    0 回复  |  直到 1 年前