Spring Core/자질구래

path variable과 email 전송

은서파 2019. 4. 18. 05:20

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);
}