Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Spring boot 什么';通过过滤器/拦截器代理http请求的最直接方式是什么?_Spring Boot_Spring Mvc_Java 8 - Fatal编程技术网

Spring boot 什么';通过过滤器/拦截器代理http请求的最直接方式是什么?

Spring boot 什么';通过过滤器/拦截器代理http请求的最直接方式是什么?,spring-boot,spring-mvc,java-8,Spring Boot,Spring Mvc,Java 8,对于我的项目,我需要通过使用过滤器或拦截器在SpringBoot中实现一个简单的代理。因此,我的微服务A将只接收一个针对微服务B的http请求,并将其与所有头/查询参数一起转发,然后返回带有正确响应代码的好或坏响应,以及微服务B将添加的任何响应头 我知道有现成的库,比如SpringCloudGateway或SpringCloudZuul,但它们都与我拥有的其他规范冲突,不能使用它们。此外,我真的不需要任何过滤/聚合逻辑,我只想做一个简单的代理 我试着做了以下几点: @Component @Ord

对于我的项目,我需要通过使用过滤器或拦截器在SpringBoot中实现一个简单的代理。因此,我的微服务A将只接收一个针对微服务B的http请求,并将其与所有头/查询参数一起转发,然后返回带有正确响应代码的好或坏响应,以及微服务B将添加的任何响应头

我知道有现成的库,比如SpringCloudGateway或SpringCloudZuul,但它们都与我拥有的其他规范冲突,不能使用它们。此外,我真的不需要任何过滤/聚合逻辑,我只想做一个简单的代理

我试着做了以下几点:

@Component
@Order(1)
public class ByPassFilter extends OncePerRequestFilter {

      @Value("${proxy.active}")
      private Boolean active;

      @Override
      public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
        if(active){
             RestTemplate rest = new RestTemplate(); //overkill here?
             HttpMethod method = HttpMethod.resolve(request.getMethod());

             switch(method){
                 case GET:
                    //use rest template to do get

              }
        }else{
          filterChain.doFilter(request, response);
        }
}
但是RestTemplate看起来非常复杂,因为它应该在我想要处理/处理请求时使用,如果代码不是200,它甚至会返回异常。我也不知道如何将输出直接写入HttpServletResponse

那么,还有其他更透明的方式吗?我看到人们使用apache的OkHttpClient,这比RestTemplate更通用吗