개발지식 먹는 하마 님의 블로그
HTTP Message 본문
📌 HTTP ( HyperText Transfer Protocol )
웹에서 데이터를 주고받기 위한 프로토콜
요청과 응답을 주고받는다.
✅ 무상태성(Stateless)
- 서버는 클라이언트의 이전 요청 정보를 저장하지 않음
- 이를 보완하기 위해 쿠키(Cookie) / 세션(Session) / 토큰(Token) 사용
✅ 비연결성(Connectionless)
- 클라이언트가 요청을 보내고 서버가 응답하면 연결이 바로 종료
- 새로운 요청을 보낼 때마다 새로운 연결을 생성해야 함
✅ 지속연결 ( Persistent Connection )
비연결성을 개선한 방법으로 한 번의 TCP 연결로 모든 요청과 응답을 주고받은 후 연결을 종료함
- TCP 3-Way HandShake와 연결 종료 횟수 감소
- 지연 시간이 감소
- 네트워크 리소스를 절약
- Keep-Alive 헤더로 일정 시간이 지나면 자동으로 연결을 종료하는 타임아웃 지정 가능
✅ 포트(Port) 번호
- HTTP 포트 80
- HTTPS 포트 443
📌 HTTP Message 구조
요청 메시지, 응답 메세지 2가지가 있다.
✉️ HTTP 요청 메세지
✅ Request Line
요청 / Path / Version
🗨️ 요청
- Create - POST
- Read - GET
- Update - PUT(전체), PATCH(일부)
- Delete - DELETE
✅ Header
요청과 관련된 부가 정보
🗨️ 필수 요청 헤더
- Host : 요청할 서버의 도메인
- User-Agent : 클라이언트의 브라우저, OS 정보
- Accept : 클라이언트가 받을 수 있는 콘텐츠 타입
- Connection : 연결 유지 여부 설정
🗨️ 요청 헤더
- Authorization : 인증 정보 포함
- Cookie : 클라이언트 쿠키 정보
- Cache-Control : 캐시 제어 설정
그 외에 엔티티, 보안 관련된 헤더들도 있다.
✅ Message Body
POST와 PUT 요청에서 사용된다.
실제 전송하는 데이터가 담긴다.
✉️ HTTP 응답 메세지
✅ Status Line
HTTP Version / Status Code / Status Text
🗨️ 응답 상태 코드 & 텍스트
🔹 100 (정보 응답)
코드 | 텍스트 | 의미 |
100 | Continue | 요청이 계속 진행됨 |
101 | Switching Protocols | 프로토콜 변경 요청 승인 |
🔹 200 (성공 응답)
코드 | 텍스트 | 의미 |
200 | OK | 정상적인 요청 처리 완료 |
201 | Created | 요청 성공, 새로운 리소스 생성됨 |
204 | No Content | 응답 본문이 없음 |
🔹 300 (리디렉션)
코드 | 텍스트 | 의미 |
301 | Moved Permanently | 리소스가 영구적으로 이동 |
302 | Found | 리소스가 임시적으로 이동 |
304 | Not Modified | 캐시된 데이터가 최신 상태 |
🔹 400 (클라이언트 오류)
코드 | 텍스트 | 의미 |
400 | Bad Request | 잘못된 요청 |
401 | Unauthor | 인증 필요 |
403 | Forbidden | 접근 금지 |
404 | Not Found | 요청한 리소스를 찾을 수 없음 |
🔹 500 (서버 오류)
코드 | 텍스트 | 의미 |
500 | Internal Server Error | 서버 내부 오류 |
502 | Bad Gateway | 게이트웨이 오류 |
503 | Service Unavailable | 서버가 과부하 또는 유지보수 중 |
✅ Header
응답 관련 정보
🗨️ 필수 응답 헤더
- Date : 필수, 응답이 생성된 시간
- Content-Type : 필수, 응답 데이터의 타입
- Server : 서버 소프트웨어 정보
- Content-Length : 응답 데이터의 바이트 크기
이 외에도 캐시, 제어, 콘텐츠, 보안, 리디렉션 등의 헤더가 있다.
✅ Message Body
HTML 또는 JSON 등의 응답 데이터
전송할 데이터가 없다면, 공백 상태이다.
📌 HTTP Method 속성
- Safe 안전성
GET VS POST, DELETE, PUT, PATCH
GET은 그냥 데이터를 읽는 것이지 변환하지 않기 때문에 안전하다.
데이터를 생성, 수정, 삭제하는 메서드는 안전하지 않다.
- Idempotent 멱등성
호출 결과는 항상 같다.
- 복구 매커니즘에 사용
- 멱등하지 않다면, 중복 요청을 보내선 안됨
- 재요청 중간에 리소스가 변경되는 것은 멱등성으로 고려하지 않음
GET -> 같은 결과가 계속 조회
PUT -> 수정 후의 결과는 계속 같다
DELETE -> 같은 요청을 여러 번해도 삭제된 결과는 같다
POST -> 멱등성을 보장하지 않는다
- Cacheable 캐시가능성
GET, HEAD, (POST)- 젼경 가능성이 적은 정적자원을 주로 캐싱한다.
'Web' 카테고리의 다른 글
DTO (Data Transfer Object) (0) | 2025.03.31 |
---|---|
웹 서비스 구조 및 흐름을 비유와 함께 이해하기 (0) | 2025.03.20 |
REST API와 RESTful API (0) | 2025.03.20 |
TCP와 UDP (0) | 2025.03.17 |
API 간략 정리 (0) | 2025.02.17 |