path variable이 email 주소로 끝날 경우 스프링은 '.'뒤를 확장자로 인식해서 제외시킨다.
즉 user/abc@def.com 로 데이터가 오면 user/abc@def만 남는다.
이를 방지하기 위해서 path variable에 아래와 같이 설정한다.
@GetMapping(value="/session/userinfo/{userId:.+}" )
public Map<String, Object> getUser(@PathVariable String userId) {
logger.trace("getUser: {}", userId);
}
하지만 일부 이메일 주소(.com 등)은 여전히 아래의 오류메시지와 함께 406 오류가 발생한다.
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver logException
WARNING: Resolved exception caused by handler execution: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
이를 처리하기 위해 MVCConfig에서 다음의 메서드를 재정의한다.
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}