HTTP는 HyperText Transfer Protocol의 약자로,
HyperText > 한 문서에서 다른 문서로 접근할 수 있는 글, 즉 링크(연결)된 텍스트이다.
Transfer > 전송하다 라는 의미로, HTTP에서는 받는 주체와 주는 주체가 존재한다.
Protocol > 협약, 통신 규약 이라는 의미를 가진다. 물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속이다.
이를 종합해보면 '컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식' 또는 '약속' 이다
HTTP는 두가지 특징을 가진다.
요청과 응답 모두 메시지로 이루어져 있으며, 클라이언트와 서버가 주고 받는 메시지를 의미한다.
요청에는 크게 3가지가 존재한다.
Start Line: 요청의 첫번째 줄에 해당한다.
이 안에는 HTTP Method, Request target, HTTP Version의 내용이 담긴다
HTTP가 데이터를 요청하는 방법으로,
자주 쓰이는 메소드에는 GET / POST / DELETE 가 있다.
GET
- 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드 , 데이터를 받아오기만 할 때 사용된다.
- 가장 간단하고 많이 사용되는 HTTP 메소드
POST
- 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
- 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다.
DELETE
- 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분이다.
Key: Value 값으로 되어있다.
Body: 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.
마찬가지로 응답의 구조도 3가지가 존재한다.
Status Line: 응답의 상태 줄이다.
응답은 요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다.
응답의 Status Line 도 세 부분으로 구성된다.
200: OK
- 문제없이 요청에 대한 응답이 잘되었다는 Status Code
201: Created
- 무언가가 잘 생성되었을 때에(Successfully Created) 오는 Status Code
- 주로 POST에 대한 응답
400: Bad Request
- 해당 요청이 잘못되었을 때 보내는 Status Code
401: Unauthorized
- 해당 요청의 신원을 알지 못한다는 의미의 Status Code
403: Forbidden
- 요청하는 사람의 신원은 알지만, 해당 요청에 대한 권한이 없다는 Status Code
404: Not Found
- 요청된 URI 가 존재하지 않는다는 의미
500: Internal Server Error
- 서버에서 에러가 났을 때의 Status Code
더 다양한 코드들은 여기 참조.
Headers: 요청의 헤더와 동일하다. 응답의 추가 정보(메타 데이터)를 담고있는 부분이다.
Body: 요청의 Body와 일반적으로 동일하다.
요청의 메소드에 따라 Body가 항상 존재하지 않듯이, 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다.