Django 프론트& 백엔드 개발

GET 메서드에서 경로 스트링과 쿼리 스트링을 사용하는 이유

Data Jun 2026. 1. 17. 09:33

웹 API를 설계하다 보면 자주 마주치는 질문이 있습니다.

“왜 쿼리 스트링과 경로 스트링은 대부분 GET 메서드를 사용할까?”
“경로 스트링과 쿼리 스트링은 정확히 어떤 차이가 있을까?”

 

이번 글에서는
GET 메서드의 역할을 기준으로
경로 스트링(Path Variable)쿼리 스트링(Query String) 의 차이를 간단하게 정리해본다.

1. GET 메서드는 왜 GET인가?

HTTP 메서드에서 GET은 다음 의미를 가진다.

서버의 상태를 변경하지 않고, 데이터를 조회하기 위한 요청

즉, GET 요청은:

  • 데이터베이스에 INSERT / UPDATE / DELETE를 하지 않고
  • SELECT 위주의 조회 요청만 수행한다

중요한 특징은 다음과 같다.

  • 여러 번 호출해도 결과가 동일함 (멱등성)
  • URL만으로 요청 의미를 표현 가능

그래서 조회 조건이나 리소스 식별 정보를 URL에 담아 전달하는 방식이 GET과 잘 맞는다.

 

2. 경로 스트링(Path Variable)이란?

GET /users/42

# 예시
GET /orders/1001
GET /posts/10/comments
  • 리소스의 고유 식별자를 표현
  • 어떤 자원을 조회할지 명확하게 지정
  • 하나의 “대상”을 식별

“42번 사용자라는 특정 리소스를 조회하라”

 

3. 쿼리 스트링(Query String)이란?

GET /users?age=30&country=kr

조회 시 적용할 조건(필터링, 정렬, 페이지 등) 전달하며 “users 중에서 조건에 맞는 것만 골라서 보여줘”라는 의미

 

4. 경로 스트링과 쿼리 스트링의 차이

구분 경로 스트링 쿼리 스트링
목적 리소스 식별 조회 조건
의미 무엇을 볼 것인가 어떻게 볼 것인가
역할 대상 지정 필터 ·옵션

 

5. 둘을 함께 쓰는 것도 자연스럽다

GET /users/42/orders?status=completed&page=1

 

6. 그래서 왜 둘 다 GET인가?

정리하면 이유는 하나다.

  • 경로 스트링 → 조회할 대상
  • 쿼리 스트링 → 조회 조건
  • 둘 다 DB 상태를 바꾸지 않음
  • GET 메서드가 가장 적절
경로 스트링과 쿼리 스트링은
서버 상태를 변경하지 않고, 조회 대상과 조건을 전달하기 위한 정보이기 때문이다.

 

7. 정리하면

경로 스트링은 리소스를 식별하고,
쿼리 스트링은 그 리소스를 어떤 조건으로 조회할지를 결정한다.
둘 다 조회 목적이므로 GET 메서드를 사용한다.