- 在浏览器搜索框中输入的方式只有format=json和format=xml,我们希望输入format=gg时,服务器能使用我们自定义的内容协商x-guigu

| 那么我们需要在配置类中配置如下,这时在浏览器搜索框中输入format=gg即可响应x-guigu类型的数据 |
| 序号1处是自定义的协商策略,有可能我们添加的自定义的功能会覆盖默认很多功能,导致一些默认的功能失效, |
| 这里我们自定义了序号1处基于参数的协商策略,导致基于请求的协商策略失效(此时postman中测试发现失效), |
| 解决方案是将序号2处的基于请求头的协商策略添加进来,这时postman测试也能成功 |
| @Configuration(proxyBeanMethods = false) |
| public class WebConfig { |
| |
| |
| @Bean |
| public WebMvcConfigurer webMvcConfigurer(){ |
| return new WebMvcConfigurer() { |
| |
| |
| |
| |
| |
| @Override |
| public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { |
| |
| Map<String, MediaType> mediaTypes = new HashMap<>(); |
| mediaTypes.put("json",MediaType.APPLICATION_JSON); |
| mediaTypes.put("xml",MediaType.APPLICATION_XML); |
| mediaTypes.put("gg",MediaType.parseMediaType("application/x-guigu")); # 自定义的协商策略 1 |
| |
| ParameterContentNegotiationStrategy parameterStrategy = new ParameterContentNegotiationStrategy(mediaTypes); |
| |
| HeaderContentNegotiationStrategy headeStrategy = new HeaderContentNegotiationStrategy(); |
| |
| configurer.strategies(Arrays.asList(parameterStrategy,headeStrategy)); |
| } |
| |
| @Override |
| public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { |
| converters.add(new GuiguMessageConverter()); |
| } |
| |
| }; |
| } |
| |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?