博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SpringBoot 自定义内容协商策略 configureContentNegotiation

Posted on 2022-02-17 21:55  zachry-r  阅读(444)  评论(0编辑  收藏  举报
  1. 在自定义的config配置类中,重写configureContentNegotiation方法
  2. @Bean
        public WebMvcConfigurer webMvcConfigurer(){
            return new WebMvcConfigurer() {
                /**
                 * 自定义内容协商策略
                 * @param configurer
                 */
                @Override
                public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
                    // 自定义策略
                    // ContentNegotiationConfigurer mediaTypes(@Nullable Map<String, MediaType> mediaTypes)
                    Map<String, MediaType> map = new HashMap<>();
                    map.put("json", MediaType.APPLICATION_JSON);
                    map.put("xml", MediaType.APPLICATION_ATOM_XML);
                    map.put("gg",MediaType.parseMediaType("applicaion/x-z"));
                    // 指定基于参数的解析类型
                    ParameterContentNegotiationStrategy negotiationStrategy = new ParameterContentNegotiationStrategy(map);
                    // 指定基于请求头的解析
                    HeaderContentNegotiationStrategy headerContentNegotiationStrategy = new HeaderContentNegotiationStrategy();
                    configurer.strategies(Arrays.asList(negotiationStrategy));
                }
            };
        }