블로그/Backend
Backend주니어2026-04-07

REST API에서 GET과 POST의 차이점은 무엇인가요?

한 줄 답변

GET은 서버에서 데이터를 조회할 때 사용하며 요청 본문이 없고 멱등성을 보장합니다. POST는 서버에 데이터를 전송하여 리소스를 생성할 때 사용하며, 멱등하지 않습니다.

핵심 개념 정리

GET과 POST는 HTTP 메서드 중 가장 기본적인 두 가지입니다.

GET은 서버에서 리소스를 조회(Read)할 때 사용합니다. 요청 데이터를 URL 쿼리 스트링에 포함하며, 요청 본문(Body)이 없습니다. 동일한 요청을 여러 번 보내도 결과가 같으므로 멱등(Idempotent)합니다. 브라우저에서 캐싱이 가능하고, 북마크할 수 있습니다.

POST는 서버에 데이터를 전송하여 새 리소스를 생성(Create)할 때 사용합니다. 데이터를 요청 본문에 포함하며, 동일 요청을 반복하면 매번 새 리소스가 생성되므로 멱등하지 않습니다.

비교 정리

항목GETPOST
목적리소스 조회 (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는 송금(반복하면 돈이 계속 빠져나감).

@backend_dev_k23

실무에서는 GET 파라미터에 민감한 정보(비밀번호, 토큰)를 절대 넣지 말라고 배웠어요. 서버 로그에 다 남거든요.

@spring_junior15

47명의 개발자가 이 질문에 참여했습니다

관련 면접 질문

앱에서 직접 답변해보세요

매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.

무료로 시작하기