REST API에서 GET과 POST의 차이점은 무엇인가요?
한 줄 답변
GET은 서버에서 데이터를 조회할 때 사용하며 요청 본문이 없고 멱등성을 보장합니다. POST는 서버에 데이터를 전송하여 리소스를 생성할 때 사용하며, 멱등하지 않습니다.
핵심 개념 정리
GET과 POST는 HTTP 메서드 중 가장 기본적인 두 가지입니다.
GET은 서버에서 리소스를 조회(Read)할 때 사용합니다. 요청 데이터를 URL 쿼리 스트링에 포함하며, 요청 본문(Body)이 없습니다. 동일한 요청을 여러 번 보내도 결과가 같으므로 멱등(Idempotent)합니다. 브라우저에서 캐싱이 가능하고, 북마크할 수 있습니다.
POST는 서버에 데이터를 전송하여 새 리소스를 생성(Create)할 때 사용합니다. 데이터를 요청 본문에 포함하며, 동일 요청을 반복하면 매번 새 리소스가 생성되므로 멱등하지 않습니다.
비교 정리
| 항목 | GET | POST |
|---|---|---|
| 목적 | 리소스 조회 (Read) | 리소스 생성 (Create) |
| 데이터 위치 | URL 쿼리 스트링 | 요청 본문 (Body) |
| 멱등성 | 멱등 (안전) | 비멱등 |
| 캐싱 | 가능 | 불가능 |
| 데이터 크기 | URL 길이 제한 (~2048자) | 제한 없음 |
| 보안 | URL에 데이터 노출 | 본문에 데이터 (상대적 안전) |
| 북마크 | 가능 | 불가능 |
면접에서 이렇게 답하세요
면접에서는 단순히 '조회 vs 생성'으로 끝내지 말고, 멱등성(Idempotent)과 안전성(Safe) 개념을 함께 설명하면 좋습니다. GET은 안전하고 멱등하지만, POST는 둘 다 아닙니다. 이 차이가 캐싱 정책, 브라우저 동작, API 설계에 직접적인 영향을 미칩니다.
자주 묻는 추가 질문
Q. PUT과 PATCH는 어떻게 다른가요?
PUT은 리소스 전체를 교체하며 멱등합니다. PATCH는 리소스 일부만 수정하며 멱등하지 않을 수 있습니다.
Q. GET 요청에 Body를 넣으면 안 되나요?
HTTP 스펙상 GET에 Body를 넣는 것은 금지되지 않지만, 대부분의 서버와 프록시가 무시합니다. Elasticsearch 같은 일부 서비스만 예외적으로 사용합니다.
Q. POST로 조회하면 안 되나요?
동작은 하지만 REST 원칙에 위배됩니다. 캐싱 불가, 멱등성 보장 불가로 인해 클라이언트가 안전하게 재시도할 수 없게 됩니다.
커뮤니티 하이라이트
“멱등성 설명할 때 '은행 송금'으로 비유하면 면접관이 바로 이해합니다. GET은 잔액 조회(몇 번을 해도 같음), POST는 송금(반복하면 돈이 계속 빠져나감).”
“실무에서는 GET 파라미터에 민감한 정보(비밀번호, 토큰)를 절대 넣지 말라고 배웠어요. 서버 로그에 다 남거든요.”
47명의 개발자가 이 질문에 참여했습니다
관련 면접 질문
앱에서 직접 답변해보세요
매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.