gpt4 book ai didi

Spring mvc : Changing default Response format from xml to json

转载 作者:IT老高 更新时间:2023-10-28 13:47:16 32 4
gpt4 key购买 nike

我已经解决了其他类似的问题,但对我没有任何帮助。

我所有的 API 都返回 JSON 作为响应默认情况下:

由于一些 XML API,我不得不添加 jackson-xml

    <dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>

现在默认为“不接受 header ”所有响应都是 XML

我希望将 JSON 作为默认响应格式

如文档中所述:

https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc

我实现了以下配置:

@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true)
.useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON);
}

案例 1: 如果我创建了 ignoreAcceptHeader(true),那么一切都是 JSON,即使 XML API 返回 JSON。

案例 2:ignoreAcceptHeader(false) 为默认值时为 XML。

我忘记提及我的 API 是这样的:

@RequestMapping(value = "/getXml", method = RequestMethod.GET)
public ResponseEntity<String> getXml( HttpServletRequest request)
throws JAXBException {
return returnXml();
}

我在这里很迷茫,我想要的只是默认(没有 AcceptHeader)应该是 JSON。 (API 将 XML 作为字符串返回)

当 Accept Header : "Application/xml"被定义时,响应应该是 XML。

任何建议都会有很大帮助。

谢谢。

最佳答案

一般来说,如果你想获得 json 响应,你需要一个 jackson-databind 模块:

<dependency> 
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${json-jackson-version}</version>
</dependency>

然后你必须在你的配置中定义一个 MappingJackson2HttpMessageConverter:

@Configuration
@EnableWebMvc
public class WebAppMainConfiguration extends WebMvcConfigurerAdapter {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter());

[..]
super.configureMessageConverters(converters);
}

[...]
}

在您的情况下,您可以实现自己的 AbstractGenericHttpMessageConverter因此您可以根据媒体类型在不同的具体转换器之间切换此转换器。

检查方法AbstractGenericHttpMessageConverter#writeInternal(..)

关于 Spring mvc : Changing default Response format from xml to json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41036377/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com