HyperText Transfer Protocol
HTML문서를 전송하는 통신규약
모든 HTTP 통신은 메시지 형식의 요청과 응답으로 이루어짐
💡 메시지 형식의 단점인 보안문제를 보완하여 HTTPS가 생겨남
HTTP 개별 통신은 모두 독립적 → 이전 통신의 상태를 보존하지 않음
= Stateless = 무상태
👍 장점 : 이전 요청의 상태를 저장하고 있어 요청이 간편해짐
👎 단점 : 요청을 받는 서버가 달라진다면 에러 발생, 상태를 저장할 공간 필요
👍 장점 : 다른 서버가 붙어도 처리할 수 있음. 트래픽이 늘어나도 서버만 늘리면 핸들 가능. 오류가 적음.
👎 단점 : 매번 필요한 요청을 전부 정확히 전송해야함
💡 매번 해야하는 요청은 토큰(Token)으로 저장하여 처리 (예. 로그인 값)
1) Start Line
HTTP Method : 요청의 종류
Request Target : 요청이 전송되는 위치 (url)
HTTP version (버젼에 따라 메시지 구조가 다르기 때문)
💡 대부분의 경우 HTTP 1.1
2) Headers
요청의 메타데이터, 객체 형태의 데이터.
Host, User-Agent(브라우저), Content-Type(콘텐츠 형식), Content-Length 등이 포함
3) Body
실제 요청 내용
💡 요청 메소드에 따라 없을 수도 있음 (GET 등)
1) Status Line
HTTP version
Status Code : 응답이 잘 되었는지 나타냄
Status Text : status code를 간략히 설명하는 텍스트
2) Headers
3) Body
GET
데이터를 받아오기만 할 때
POST
데이터를 생성/수정할 때 → body에 담는 내용이 핵심
✨ 사실 POST는 GET, DELETE 요청까지 다 할 수 있음
DELETE
서버의 특정 데이터를 삭제할 때
🟢 Success
200
: OK
201
: Created (등록이 잘 되거나, 삭제가 잘 됐을 때)
🟡 Error
400
: Bad Request (대부분 프론트에서 제대로 잘 안한 경우)
401
: Unauthorized (권한 없음, 토큰 없음)
403
: Forbidden (권한 없음, 토큰 있어도 권한 없음)
404
: Not Found (없는 페이지, 데이터)
🔴 Server Error
500
: Internal Server Error (서버 터짐)
HTTP의 Stateless 특징
Request와 Response의 구조
HTTP의 Request Method 종류
대표적인 Status Code