【发布时间】:2022-11-03 10:00:01
【问题描述】:
当我的 api 在请求中没有收到时,我想放置一个默认的内容类型,我该如何在 webFlux 中做到这一点?我看到它有一个类似于“WebMvcConfigurer”的“WebFluxConfigurer”类,但我没有找到如何做到这一点。
【问题讨论】:
-
请提供足够的代码,以便其他人可以更好地理解或重现该问题。
标签: java spring-webflux
当我的 api 在请求中没有收到时,我想放置一个默认的内容类型,我该如何在 webFlux 中做到这一点?我看到它有一个类似于“WebMvcConfigurer”的“WebFluxConfigurer”类,但我没有找到如何做到这一点。
【问题讨论】:
标签: java spring-webflux
您可以使用WebFilter 来转换传入的请求,如果缺少Content-Type 标头,则添加默认的Content-Type
在这个例子中,我默认为application/json
@Component
public class DefaultContentTypeWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
if (request.getHeaders().getContentType() == null) {
exchange = exchange.mutate()
.request(request
.mutate()
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.build())
.build();
}
return chain.filter(exchange);
}
}
【讨论】:
你试过类似的东西吗?
@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {
public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
builder.fixedResolver(MediaType.APPLICATION_JSON);
}
}
【讨论】: