在SpringBoot v2.1.3中,按如下所示设置 @RequestMapping 时:
@GetMapping("/assets/{name}")
public AssetInfo assetInfo(@PathVariable("name") String name) {
return getAssetInfo(name);
}
查询/assets/image123.jpg
会导致:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:219)
因为它假设产生的Content-Type 必须为 image/jpeg
。
答案 0 :(得分:0)
您可以在WebMvcConfigurer
中禁用它:
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
这将解决内容协商的问题-但Spring仍然从PathVariable( id = "image123"
)中排除扩展。可以使用以下命令禁用它:
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
答案 1 :(得分:0)
谢谢!只需将缺失的位添加到 the answer from TeNNox 以便更轻松地复制和粘贴 :) 我会添加注释,但您不能在那里编写多行代码。
@EnableWebMvc
@Configuration
public class SpringConfigurationForMVC extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
}