[HTTP] application/x-www-form-urlencoded, application/json, multipart/form-data 차이

hyeong1·2025년 3월 12일

application/x-www-form-urlencoded

<form> 을 통해 POST 요청을 보낼 때 기본이 되는 Content-Type 이다.
파라미터를 key=value의 쿼리 스트링 형식으로 전송한다. 쿼리 스트링으로 변환된 파라미터는 url 요청 본문(body)에 포함된다.
URL 인코딩 방식은 보통 URL 전체 길이 제한이 있기 때문에 크기가 큰 데이터를 전송할 때는 적합하지 않다.

application/x-www-form-urlencoded 타입의 파라미터를 Spring 서버가 받는다면 @RequesetParam 이나 @ModelAttribute 를 이용해야 한다. 파라미터가 body 에 들어가지만 Spring 에서는 form 파라미터로 처리한다.

application/json

파라미터를 JSON 형식으로 변환하여 요청 본문에 포함한다.

클라이언트에서 application/json 타입으로 파라미터를 Spring 서버로 보낸다면 Spring 에서는 이를 @RequestBody 로 받을 수 있다.

multipart/form-data

파일이나 이미지같은 대용량의 데이터를 서버로 전송할 때는 주로 multipart/form-data 타입을 사용한다.
multipart/form-data 타입으로 파일을 서버로 보내면 바이너리 파일을 그대로 전송한다. 파트를 구분하기 위해 Boundary 문자열을 사용한다고 한다.

파일을 Base64 로 압축해서 전송한다면 application/json 타입으로도 파일 데이터를 포함시켜 요청을 보낼 수 있다. 하지만 파일의 크기가 클 경우에는 multiplart/form-data 를 사용하는 것이 일반적이다.

profile
기록

0개의 댓글