【发布时间】: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
我正在尝试访问将返回带有媒体类型“application/x-ndjson”标头的响应的休息端点。如何使用 spring 5 Webclient 使用此端点? 如果我在 Spring 5 WebClient 中将媒体类型设置为“application/stream+json”,它会起作用吗?
【问题讨论】:
标签: java spring webclient mime-types spring-webflux
您应该能够使用您希望支持的所有媒体类型(包括此特定媒体类型)创建自己的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。
【讨论】: