API를 호출할 때 content-type으로 보통 application/json을 많이 사용한다.
몇몇 코드에서 content-type을 application/x-www-form-urlencoded로 지정하는 것을 보았는데
각각의 차이가 무엇이 있는지, 어떠한 경우에 구분해서 사용하는지 알아보자.
application/x-www-form-urlencoded
// x-www-form-urlencoded
key1=value1&key2=value2
html form을 통한 POST 전송 방식 중 가장 기본이 되는 Content-Type
보내는 데이터를 url 인코딩 후 웹 서버에 보내는 방식
인코딩이 필요하기 때문에 크기가 큰 데이터에 대해 해당하는 방식으로 보내기가 적합하지 않다
x-www-form-urlencoded에 대한 인코딩 규칙
- key=value 형식 요청 데이터를 키(key)와 값(value)의 쌍으로 구성
- 각 쌍은 '='로 키와 값이 연결
- 여러 개의 key-value 쌍은 '&'로 구분
모든 브라우저에서는 application/x-www-form-urlencoded에 대해 body의 데이터를 자동으로 encoding 하도록 구현되어 있는지만,
브라우저가 아닌 애플리케이션 로직에서 해당 타입으로 POST 요청을 보낼 때는 framework 또는 library를 통해 body에 대한 인코딩이 되는지 여부를 확인해주어야 한다.
application/json
키-값 쌍의 집합으로, 각 필드는 큰 따옴표로 둘러싸인 문자열이나 숫자, 배열, 객체 등의 형태
json의 특징과 동일하게, 배열 및 복잡한 데이터 구조를 간결하게 표현하기에 좋다
// json
{
key1: value1,
key2: value2
}