【问题标题】:SpringWebFlux - How to setup a default content type?Spring WebFlux - 如何设置默认内容类型?
【发布时间】:2022-11-03 10:00:01
【问题描述】:

当我的 api 在请求中没有收到时,我想放置一个默认的内容类型,我该如何在 webFlux 中做到这一点?我看到它有一个类似于“WebMvcConfigurer”的“WebFluxConfigurer”类,但我没有找到如何做到这一点。

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: java spring-webflux


【解决方案1】:

您可以使用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);
    }
}

【讨论】:

    【解决方案2】:

    你试过类似的东西吗?

    @Configuration
    @EnableWebFlux
    public class WebFluxConfig implements WebFluxConfigurer {
    
        public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
            builder.fixedResolver(MediaType.APPLICATION_JSON);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2014-05-08
      • 2011-03-26
      • 2020-02-01
      • 2018-12-03
      • 2016-05-14
      • 1970-01-01
      相关资源
      最近更新 更多