【问题标题】:how to configure spring-5 “webclient (with jetty connector)” webflux with mediatype "application/x-ndjson"如何使用 mediatype “application/x-ndjson” 配置 spring-5 “webclient (with jetty connector)” webflux
【发布时间】:2020-09-05 19:05:38
【问题描述】:

我正在尝试访问将返回带有媒体类型“application/x-ndjson”标头的响应的休息端点。如何使用 spring 5 Webclient 使用此端点? 如果我在 Spring 5 WebClient 中将媒体类型设置为“application/stream+json”,它会起作用吗?

【问题讨论】:

    标签: java spring webclient mime-types spring-webflux


    【解决方案1】:

    您应该能够使用您希望支持的所有媒体类型(包括此特定媒体类型)创建自己的Jackson2JsonDecoder

    类似:

    Jackson2JsonDecoder jsonDecoder = new Jackson2JsonDecoder(Jackson2ObjectMapperBuilder.json().build(), 
        new MimeType("application", "json"), new MimeType("application", "x-ndjson"));
    
    

    然后在构建的时候直接在WebClient中配置这个解码器:

    WebClient webClient = WebClient.builder().codecs(codecs -> codecs.defaultCodecs().jackson2JsonDecoder(jsonDecoder)).build();
    

    如果您使用的是 Spring Boot,您可以通过以下方式实现所有目标:

    @Configuration
    public class JsonConfiguration {
    
      @Bean
      public CodecCustomizer ndJsonCustomizer(ObjectMapper objectMapper) {
        Jackson2JsonDecoder jsonDecoder = new Jackson2JsonDecoder(objectMapper, 
            new MimeType("application", "json"), new MimeType("application", "x-ndjson"));
        return codecs -> codecs.defaultCodecs().jackson2JsonDecoder(jsonDecoder);
      }
    
    }
    

    将来,您可能不需要这样做,因为 Spring Framework 团队是 considering ndjson support out-of-the-box to replace stream+json

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2020-08-02
      • 2019-01-03
      • 2019-11-23
      • 2018-05-09
      • 2019-11-07
      • 2017-12-31
      • 2021-12-18
      • 2018-11-09
      相关资源
      最近更新 更多