HTTP는 Hypertext Transfer Protocol의 약자이다.
이는 Application 계층의 프로토콜이며, 정보 전송을 위해 설계됐다.
웹페이지 로드를 위해 주로 사용되며 일반적으로 client의 요청과 server의 응답으로 진행된다.
앞서 말한 듯, HTTP는 client의 request와 server의 응답으로 진행된다.
여기서 request는 어떠한 정보를 가지고 있어야한다.
1. URL
2. HTTP Method
3. HTTP Header와 Body
실제로 HTTP version type도 포함해야하나 대부분의 http통신 함수에 포함되어 무시하겠다.
HTTP Method는 가장 일반적으로 GET
과 POST
가 있다.
GET은 웹사이트의 형태로 정보가 반환되는 경우가 많고, POST는 client가 server에게 정보 제출을 목적으로 사용되는 경우가 많다.
가장 쉽게 구분하는 방법은 GET은 URL뒤에 쿼리스트링
이라는 이름의 파라미터 덩어리를 묶어 보낸다.
따라서 Https://www.example.com/param?test1=1&test2=2
와 같은 방식으로 URL이 있을 때,
param?test1=1&test2=2
라는 쿼리스트링을 통해 현재 내가 보는 웹 페이지는 GET방식을 사용했고 그에 대한 응답으로 온 것이구나 라는 사실을 알 수 있다.
HTTP 통신을 위해서 server의 URL, Method를 제외하면 Header와 Body가 남는다.
Header만을 사용해서 통신을 할 수도 있기에 Body는 선택적이지만 둘 다 작성하겠다.
Header는 key-value의 데이터 형태를 갖는다.
브라우저의 종류, Body의 content-type, 어떤 데이터를 요청하는지 등 다양한 정보를 포함한다.
Body는 server에 제출하는 데이터를 넣을 수 있다.
content-type을 정하는 것도 자유이지만 json형태를 보편적으로 많이 사용한다.
HTTP request를 받은 server는 client에게 HTTP response를 보낸다.
이때, request와 비슷하지만 다르게 두 가지 정보를 포함한다.
1. 상태코드
2. HTTP Header와 Body
여기서 Header와 Body는 request와 동일한 의미로 받아들여도 되지만 상태코드라는 것을 추가로 전송한다.
상태코드란 HTTP request가 어떻게 전송이 됐는지를 알려주는 코드이다.
말 그대로 상태를 의미하며
100번대는 정보를 나타내고,
200번대는 성공을 나타내며,
300번대는 Redirection을,
400번대는 클라이언트 오류를,
500번대는 서버 오류를 나타낸다.
실제로 성공한 HTTP response의 상태코드는 200 OK
를 가장 많이 볼 수 있다.