반응형
2026.04.01 수요일
HTTP(HyperText Transfer Protocol) 요청 방식은 2가지가 있습니다. HTTP요청이란, 클라이언트(브라우저, 앱)가 서버에게 데이터나 작업을 요청하는 메시지를 의미합니다. GET방식과 POST방식의 차이를 비교해봅니다.
GET vs POST 한눈에 비교
| GET | POST | |
| 목적 | 데이터 조회 | 데이터 생성/변경 |
| 데이터 위치 | URL (Query String) | HTTP Body |
| 예시 | /user?id=1 | Body: { "id": 1 } |
| 보안 | ❌ URL에 노출됨 | ⭕ URL에 노출 안됨 |
| 캐싱 | ⭕ 가능 (브라우저, CDN) | ❌ 거의 불가능 |
| 재요청 (새로고침) | ⭕ 안전 | ❌ 재전송 경고 발생 |
| 데이터 길이 제한 | ❌ 제한 있음 (URL 길이) | ⭕ 거의 없음 |
| 멱등성 | ⭕ 있음 (여러 번 호출해도 동일) | ❌ 없음 (중복 생성 가능) |
| 북마크 | ⭕ 가능 | ❌ 불가능 |
| 주 사용 사례 | 검색, 조회 API | 로그인, 회원가입, 데이터 등록 |
1. 목적 차이
GET 방식
- 데이터 조회 (Read)
- 서버 상태를 바꾸지 않는 요청
POST 방식
- 데이터 생성/변경 (Create/Update)
- 서버 상태를 바꾸는 요청
2. 데이터 전달 방식
GET 방식
- URL에 붙여서 보냄 (Query String)
/user?id=123&name=kim
POST 방식
- HTTP Body에 담아서 보냄
Body: { "id": 123, "name": "kim" }
3. 보안 차이
GET 방식
- 민감정보에 부적합
- URL에 파라미터가 노출됨 (브라우저 주소창, 로그, 히스토리)
POST 방식
- 상대적으로 안전함 (HTTPS가 핵심)
- URL에 파라미터가 노출되지 않음 (HTTP Body)
4. 캐싱 & 재요청
GET 방식
- 캐싱 가능 (브라우저, CDN)
- 뒤로가기/새로고침 안전
POST 방식
- 캐싱 거의 안 됨
- 새로고침 시 "재전송 경고" 뜸
5. 데이터 길이 제한
GET 방식
- URL 길이 제한 존재 (브라우저별로 상이, 일반적으로 ~2KB 혹은 ~8KB)
POST 방식
- 사실상 제한 없음 (서버 설정에 따라 다름)
6. 멱등성
GET 방식
- 멱등 (여러 번 호출해도 결과 동일)
POST 방식
- 멱등 아님 (여러 번 호출하면 데이터 중복 생성 가능)
반응형