| 항목 | GET | POST |
|---|---|---|
| 기능 | 조회(Read) | 생성(Create), 전송 |
| 데이터 위치 | URL 쿼리스트링에 포함 | HTTP Body에 포함 |
| URL 노출 | ❗됨 (북마크/기록에 남음) | ✅ 안 됨 |
| 데이터 크기 제한 | 있음 (브라우저/서버마다 다름) | 상대적으로 없음 |
| 캐싱 | 가능 (브라우저가 캐싱함) | 기본적으로 안 함 |
| 멱등성 | ✅ 있음 (같은 요청 = 같은 결과) | ❌ 없음 (같은 요청이라도 매번 결과 달라질 수 있음) |
| 보안 | 낮음 (데이터가 주소창에 노출) | 상대적으로 안전함 (하지만 암호화는 따로 필요) |
URL에 데이터를 포함
예:
GET /search?query=chatgpt&page=2 HTTP/1.1
📎 주소창에 그대로 보이기 때문에:
데이터를 **본문(Body)**에 담아 보냄
예:
POST /login HTTP/1.1
Content-Type: application/json
{
"email": "[email protected]",
"password": "1234"
}
📎 주소창에 안 보임 → 조금 더 안전, 많은 양 전송 가능
💡 멱등성 = "같은 요청을 몇 번 보내도 결과가 같다"
| 메서드 | 멱등성 여부 | 의미 |
|---|---|---|
| GET | ✅ | 여러 번 조회해도 항상 같은 결과 |
| POST | ❌ | 같은 요청이라도 새로 생성되거나, 중복 저장될 수 있음 |
📌 예: 같은 상품을 POST로 주문하면, 두 번 주문될 수 있음