Python으로 URL 쿼리 파라미터 처리 방법

URL 쿼리 파라미터 처리 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 웹 프레임워크 개발자
  • URL 파라미터 처리 기능이 필요한 Python 웹 애플리케이션 개발자
  • 경량 웹 프레임워크 구축에 관심 있는 개발자
  • 난이도: 중간 수준(기본 Python 및 웹 개발 지식 필요)

핵심 요약

  • urllib.parse.parse_qs를 사용하여 쿼리 문자열을 키-값 딕셔너리로 변환
  • 중복된 키는 리스트 형태로 처리 가능 (/products?color=red&color=blue)
  • request["query_params"] 객체에 파싱된 파라미터를 저장하여 핸들러에서 쉽게 접근 가능

섹션별 세부 요약

1. 쿼리 파라미터 개요

  • URL에서 ? 이후에 위치한 키-값 쌍은 검색, 필터링, 페이징 등 웹 앱 기능 구현에 사용
  • 예시: /search?q=python&sort=ascq="python", sort="asc"

2. 파싱 로직 구현

  • full_path.partition('?')로 경로와 쿼리 문자열 분리
  • urllib.parse.parse_qs 사용 예:

```python

from urllib.parse import parse_qs

params = parse_qs("q=python&sort=asc")

```

  • 중복된 키 처리:

```python

{k: v[0] if len(v) == 1 else v for k, v in params.items()}

```

3. 요청 객체 통합

  • 파싱된 파라미터를 request["query_params"]에 저장
  • 핸들러에서 직접 접근 가능:

```python

def search_handler(request):

q = request["query_params"].get("q", "")

sort = request["query_params"].get("sort", "desc")

```

4. 주요 사용 사례

  • 페이징: ?page=2&limit=10
  • 검색: ?q=keyword
  • 필터링: ?category=books&price_min=10
  • 정렬: ?sort=asc

5. URL 인코딩 처리

  • 클라이언트는 %20과 같은 URL 인코딩 사용
  • parse_qs가 자동으로 URL 디코딩 처리

결론

  • urllib.parse.parse_qs를 활용한 쿼리 파라미터 처리는 경량 웹 프레임워크에서 필수적인 기능
  • 중복된 키를 리스트로 처리하고, request 객체에 통합하여 핸들러에서 유연하게 사용 가능
  • URL 인코딩 자동 처리 기능을 통해 클라이언트와의 호환성을 유지할 수 있음