我使用REST API开发Spring MVC应用程序。
我在控制器中有这个方法:
@RequestMapping(value="/roomId/{roomId}",produces = "application/json")
public List<DayStatisticDto> findBySiteAndRoom(@PathVariable("roomId") String roomId, @RequestParam("timestamp") String timestamp, @RequestParam("pageSize") Integer pageSize) throws ParseException {
List<DayStatisticDto> dayStatisticDtos = dayStatisticService.latestDailyStatisticsForRoom(getCurrentUserSiteCode(), roomId, pageSize, timestamp, false);
return dayStatisticDtos;
}
当我提出此请求时:
使用此请求参数:
我得到一个正确的JSON对象作为响应。
但是当我更改参数&#34; roomId&#34;从I1.A.122到I1.A.123:
使用此请求参数:
我收到错误代码 406 - Inacceptable
我在项目的各处都使用这种请求,我从来没有遇到过这种问题。参数&#34; roomId&#34;仍然是一个正常的整数值。它如何产生Spring Mvc的问题?标题和运行代码仍然完全相同。
当我在&#34; findBySiteAndRoom&#34;的第一行放置一个断点时方法,在第一种情况下它到达了这一点。但在第二种情况下,它会在到达断点之前返回406错误代码。
提前感谢您的帮助。
答案 0 :(得分:0)
我发现了一种修复方法。我创建了一个扩展WebMvcConfigurerAdapter的Spring配置,并且我覆盖了“configureContentNegotiation”方法,如下所示:
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
使用此参数,它可以完美地工作。
但我仍然不明白什么可以解释,房间ID I1.A.122它的工作原理和房间ID I1.A.123它不起作用。