[오류] HTTP 응답 오류 - 415 Unsupported Media Type
HTTP 에러
415 Unsupported Media Type
HTTP 오류에 대해 알아보자.
HTTP 오류 중 4XX번대 오류에 대해 알아보려고 한다.
클라이언트(웹 브라우저)에서 서버에 어떠한 요청(Request)를 하면
서버는 응답(Response)를 보내주는데,
정상적으로 처리가 완료 되면 성공 응답이 돌아오고,
정상적으로 처리가 되지 않는 경우에는 실패 응답이 돌아온다.
HTTP 응답 코드는 1부터 5까지 있는데,
오늘은 4인 4XX번대 오류에 대해 알아보려고 한다.
4XX번대 오류는 Client Error로 클라이언트 오류이다.
즉, 클라이언트 요청을 처리할 수 없어 발생한 오류이다.
그중 415 오류는 흔하지 않은 오류이기 때문에
좀 더 자세하게 다뤄 볼 예정이다 !
🔍 오류 배경 및 원인
외부 API 호출시
JerseyClientUtil에서
아래와 같은 에러 메시지가 찍혔다.
inbound jaxrs response unsupported Media type
inbound jaxrs response unsupported Media type 에러는
HTTP 응답 오류로 415 Unsupported Media Type 에러 이다.
4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
415 Unsupported Media Type 를 한국말로 번역하면,
'415 지원되지 않는 미디어 유형' 으로
클라이언트 오류 응답 코드이다.
415 Unsupported Media Type
즉,
클라이언트가 보낸 페이로드가 지원하지 않는 형식이기 때문에
서버가 요청을 수락하지 않음을 나타낸다.
쉽게 말하면,
클라이언트와 서버의 요청/응답하는
데이터의 매개변수 설정이 잘못되었을 때
발생하는 에러이다.
해결 방법에 대해서 알아보자,
🔍 오류 해결 방법
✅ 헤더 타입 설정
✅ RequestBody 설정
위 두가지를 확인해보면 된다.
헤더타입과 RequestBody
Content-Type 헤더와 Consumes 설정
Consumes은
클라이언트가 서버에게 보내는 데이터 타입을 명시한다.
@RequestMapping의
consumes 설정과 Content-Type request
헤더가 일치할 경우에 URL이 호출된다.
Content-Type은
HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터 형식을 알려주는 헤더이다.
즉, 현재 리퀘스트 또는 리스폰스의 바디에 들어 있는
데이터가 어떤 타입인지를 나타낸다.
대부분의 브라우저와 웹서버는,
HTTP 표준 스펙을 따르는 Content-Type 헤더를 기준으로
HTTP 메시지에 담긴 데이터를 분석·파싱한다.
그러나,
HTTP 요청의 GET방식인 경우는
무조건 URL 끝에 쿼리스트링(key=value) 형식이기 때문에
Content-Type 헤더가 굳이 필요없다.
따라서 Content-Type은 POST방식이나 PUT방식처럼
BODY에 데이터를 싣어 보낼 때 중요하다.
일반적으로는 사용되는 Content-Type은 3가지가 있다.
json, x-www-form-urlencoded, form-data가 있는데
아래에서 자세하게 다뤄보자.
1. application/json
요청 데이터가
Json {key : value} 형식일 때 사용한다.
contentType : "application/json"
2. application/x-www-form-urlencoded
요청 데이터가
쿼리스트링(key=value) 형식일 때 사용한다.
HTML 폼을 만들어 데이터를 전송할 때 주로 사용하는 헤더이지만,
요즘은 Json Handling을 많이하기 때문에 사용이 예전에 비해 많이 줄었다.
contentType : "application/x-www-form-urlencoded"
3. multipart/form-data
요청 데이터에
파일이 첨부될 수 있음을 알릴 때 사용한다.
contentType : "multipart/form-data"
외부 및 내부 API 호출 할 때,
데이터 형식 등을 잘 확인해서
개발을 하자 !
쉽지만 놓치기 쉬운...
주니어 개발자 화이팅