sunny906 2024-11-27 09:55 采纳率: 80%
浏览 20
已结题

@HttpExchange服务间调用时如何转发请求头的参数

@Configuration
public class WebClientConfiguration {
    @Bean
    @LoadBalanced
    public WebClient.Builder webClientBuilder() {
        return WebClient.builder();
    }
    
    @Bean
    public AFeign aFeign() {
        WebClient webClient = webClientBuilder().build();
        return HttpServiceProxyFactory.builder().exchangeAdapter(WebClientAdapter.create(webClient))
                .build().createClient(AFeign.class);
    }
}

@HttpExchange(url = "http://serverA")
public interface AFeign {
    @PostExchange(value = "/product")
    Mono<Entity> add( @RequestBody Entity entity);
}

问题请教:

  • 服务间调用的时候,HttpExchange如何添加自定义的请求头并把请求头转发给ServerA
  • 有没有类似OpenFeign的RequestInterceptor拦截器,在拦截器里统一地根据上下文动态赋值

测试:

    @Resource
    private AFeign aFeign;
    @PostExchange(value = "/a")
    public Mono<String> test(@RequestBody Entity entity) {
        // 服务间调用的时候,HttpExchange如何添加自定义的请求头并把请求头转发给ServerA
        // 有没有类似OpenFeign的RequestInterceptor拦截器,在拦截器里统一地根据上下文动态赋值
        return aFeign.add(entity).flatMap(s->{
            System.out.println(s);
            return Mono.just(s);
        }).doOnError(e-> System.out.println(e.getMessage()));
    }
  • 写回答

1条回答 默认 最新

  • 编号灬9527 2024-11-27 15:50
    关注

    测试了一下,完全可以,WebClient.Builder.filter和RequestInterceptor是一样的效果,

    img


    你想要从web请求中获取请求头然后由webclient携带这些自定义头(比如token那种),那得和springmvc一样,自己把request存起来,用的时候再去取

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月27日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日