Springboot - 415 Unsupported Media Type

nGyu·2022년 2월 4일
0

트러블슈팅

목록 보기
1/3
post-thumbnail

Spring을 공부하다가 갑자기 에러가 뿜어져나왔다.
Unsupported Media Type

이게 무슨 오류인지 황당했는데 대충 미디어타입이 잘못되었다는거 같았다.

@PostMapping("/api/user")
public String setUser(@RequestBody RegisterDTO regDto){
	return null
}

우선, 이런 형태의 코드였는데 도대체 뭐가 문제인가 싶었다.

중간에 처리해주는 코드가 없더라도 Body에 클라이언트가 보낸 값 정도는 받아올 수 있어야하는거 아닌가? 이게 안되면 Spring은 따로 설정을 해줘야하나?

라는 생각을 하고있을 무렵, 과거 NodeJS를 이용해 백엔드를 하던 기억을 살려 Content-Type 문제인가 하고 있었다.
그렇게 어떤것이 문제인지 알게 되었다.


Content-Type

클라이언트에서 서버로 값을 보낼 때 받아오는 방법이 여러가지 있을텐데, 우선 필자는 아래 두개만 알고 있었다.

  • @RequestParam
  • @RequestBody

이 두개만 알고 있었다.
그런데 내가 사용하는 RequestBody는 어떤 Content-Type을 받아오는지 한번 찾아보았다.

보아하니 Object 형식을 받아온다는것같은데 이를 좀 더 찾아보았다.
정확히 문서에서 찾은것은 아닌데 각종 블로그에서는 @ReqeustBody의 Content-Type은 application/json 형식을 받을 수 있다고 나와있었다.

필자는 insomnia를 이용해서 테스트를 했는데 해당 프로그램에서 Content-Type을 확인해보니 multipart/form-data 형식으로 보내고 있었다.

나중에 이미지를 보내거나 할 때 해당 Content-Type을 이용하는걸로 알고있는데 이를 어떻게 해야하나 고민을 하던 차, 새로운 어노테이션을 알게되었다.

@ModelAttribute

계속 공부를 하다보니 새로운것들이 자꾸 툭툭 튀어나오는데 정말 미칠노릇이다.
자세한 부분은 따로 공부를 해서 블로그에 정리를 해야겠다..

이는 multipart/form-data 를 이용할 수 있다고 해서 해당 어노테이션을 이용하기로 했다.

@PostMapping("/api/user")
public String setUser(@ModelAttribute RegisterDTO regDto){
	return null
}

처음에는 415 에러를 내뿜어서 정말 곯머리를 앓았지만
새로운 어노테이션을 알고, 사용을 해 보니 해결했다.

해결한데에서 끝을 내는것이 아니고, 여러 어노테이션을 어떤 케이스에 적절하게 사용하는지 공부와 연습을 해봐야겠다,,

profile
지금보다 내일을, 모레를 준비하자

0개의 댓글