gpt4 book ai didi

http - 如何在没有提供 Accept header 的情况下在 Spring MVC 中设置默认内容类型?

转载 作者:可可西里 更新时间:2023-11-01 15:05:04 25 4
gpt4 key购买 nike

如果向我的 API 发送的请求没有 Accept header ,我想将 JSON 设为默认格式。我的 Controller 中有两种方法,一种用于 XML,一种用于 JSON:

@RequestMapping(method = RequestMethod.GET,produces=MediaType.APPLICATION_ATOM_XML_VALUE)
@ResponseBody
public ResponseEntity<SearchResultResource> getXmlData(final HttpServletRequest request) {
//get data, set XML content type in header.
}

@RequestMapping(method = RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<Feed> getJsonData(final HttpServletRequest request){
//get data, set JSON content type in header.
}

当我发送没有 Accept header 的请求时,将调用 getXmlData 方法,这不是我想要的。如果没有提供 Accept header ,有没有办法告诉 Spring MVC 调用 getJsonData 方法?

编辑:

ContentNegotiationManagerFactoryBean 中有一个 defaultContentType 字段可以解决这个问题。

最佳答案

来自Spring documentation ,您可以像这样使用 Java 配置来执行此操作:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_JSON);
}
}

如果您使用的是 Spring 5.0 或更高版本,请实现 WebMvcConfigurer 而不是扩展 WebMvcConfigurerAdapterWebMvcConfigurerAdapter 已被弃用,因为 WebMvcConfigurer 具有默认方法(由 Java 8 实现)并且可以直接实现而无需适配器。

关于http - 如何在没有提供 Accept header 的情况下在 Spring MVC 中设置默认内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189245/

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