아래와 같이 에러가 발생할 때가 있습니다.
[Error 명]
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
어떤 상황에서 발생을 하는 걸까요?? 이번에 Spring Security 케이스를 구성할때도 발생이 가능합니다. 기존에 REST API를 개발할 때, Controller.java를 개발했었습니다. 그때 코드를 보면...
@RequestMapping(value = "/stationMise", method = RequestMethod.POST)
public ResponseEntity<?> insertStationMise(
@ApiParam(value = "StationMiseDTO", required = true) @RequestBody StationMiseDTO smDTO){
L.info("Insert Station Mise");
return ResponseEntity.ok(userService.insertStationMise(smDTO));
}
POST 방식의 API의 경우 @RequestBody 어노테이션으로 http의 요청 본문에 함께오는 정보를 DTO에 담아서 사용을 했었습니다.
하지만, 이번에 view controller에 POST방식의 메서드도 같은 느낌으로 아래와 같이 적용을 하게되면....
@PostMapping("/signup")
public String signupUser(@RequestBody UserDTO user) throws Exception {
L.info("[POST] /usersignup :: Insert User in user_info table - {}", user);
System.out.println(user);
myUserDetailsService.signupUser(user);
return "redirect:/home";
}
위의 Error를 보실 수 있습니다.
정리를 하자면... RestController에 RequestMapping을 POST로 사용하는 REST API의 경우 본문에 데이터를 받아올때, @RequestBody 어노테이션을 사용하고... Controller에서 PostMapping을 사용하는 경우는 해당 어노테이션을 사용하면 위의 Error를 보게됩니다.
@RequestBody 어노테이션만 삭제해도 문제는 해결됩니다.
-Ayotera Lab-
댓글