컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.
- Hyper Text : 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어
- Trasfer : HTML로 만든 웹페이지 문서를 전달
- Protocol : 컴퓨터 끼리 어떻게 HTML 파일을 주고 받을지에 대한 소통 방식 또는 약속
HTTP 통신의 핵심은 요청과 응답이고 컴퓨터끼리의 소통방식은 메세지의 형식으로 요청하고 응답한다. 즉, 컴퓨터끼리의 소통도 결국 사람의 필요에 의해서 만든 소통 방식이기 때문에 우리의 소통 방식과 큰 차이점이 없다. 예를들어, 랩탑을 열고 유튜브에 접속하여 내가 평소 즐겨보던 유튜브 영상의 링크를 누른다. 그 순간 내 랩탑은 구글의 서버에게 요청을 보낸다. "골든 리트리버 영상 주세요." 구글의 서버는 이 요청을 처리해서 다시 요청을 보낸 나의 랩탑에 응답을 보낸다. "귀여운 골든 리트리버 영상 드립니다."
HTTP의 가장 큰 특징이 바로 Stateless 특성이다. 문자 그대로 번역하면 State(상태) + less(없음) 을 의미하는데 각각의 HTTP 통신(요청/응답)은 독립적 이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 하는 특징을 의미한다.
그러므로 매 통신마다 사전에 필요한 모든 정보를 담아서 요청을 보내야만 한다.
실제 프로젝트를 진행할 때, 프론트엔드에서 백앤드에게 데이터를 요청하고 백엔드는 요청을 처리해서 응답을 준다. 이 요청과 응답에 대한 구조와 메세지를 잘 파악하면 대부분의 에러를 잡아낼 수 있다.
3-1. Request 메세지 구조
3.2. Response 메세지 구조
2)
3. HTTP Request Methods
4. HTTP 메시지 구조
4-1) 요청 메시지 구조
1) Start Line : 요청의 첫번째 줄
POST / login HTTP/1.1
HTTP method : 요청이 의도한 액션을 정의
Request target : 요청이 전송되는 목표 url
HTTP version : HTTP 버전
2) Headers : 요청의 메타데이터를 담고 있는 부분
3) Body : 요청의 실제 내용, 요청 메소드에 따라 존재하지 않을 수 있음
요청 메시지 실제 예시
4-2)Response 메시지 구조
1) Status Line : 응답의 첫번째 줄로 상태를 나타냄
2) Headers
3) Body
응답 메시지 실제 예시
HTTP Request Method
GET : 데이터를 받아오기만 할 때 사용하며 웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
POST : 데이터를 생성,수정할 떄 사용하며 body에 담는 내용이 핵심!
DELETE : 서버에 저장된 특정 데이터를 삭제할 때 사용
Status code
1) Success
200: OK
가장 자주 보게 되는 Status Code로 문제없이 요청에 대한 처리가 백엔드 서버에서 이루어지고 나서 오는 응답코드
무언ㄴ가가 잘 생성되었을 때 오는 Status code로 대게 POST메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정되었을 때 보내는 코드
요청이 성공했으며 제공할 응답메세지가 없을 경우 사용되는
2) Client Error
400: Bad Request
해당 요청이 잘못되었을 때 보내는 Status Code
주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용
401:
해당 요청을 진행하려면 먼저 로그인 또는 회원가입이 필요하다는 의미를 나타내는 Status code
403 : Forbidden
404 : Not Found
3) Server Error
500 : Internal Server Error