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