본문 바로가기
SpringBoot

[Spring Boot][Error] org.springframework.web.HttpMediaTypeNotSupportedException

by 청양호박이 2019. 12. 29.

아래와 같이 에러가 발생할 때가 있습니다.

 

[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-

댓글