URL 쿼리 파라미터 처리 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 프레임워크 개발자
- URL 파라미터 처리 기능이 필요한 Python 웹 애플리케이션 개발자
- 경량 웹 프레임워크 구축에 관심 있는 개발자
- 난이도: 중간 수준(기본 Python 및 웹 개발 지식 필요)
핵심 요약
urllib.parse.parse_qs
를 사용하여 쿼리 문자열을 키-값 딕셔너리로 변환- 중복된 키는 리스트 형태로 처리 가능 (
/products?color=red&color=blue
) request["query_params"]
객체에 파싱된 파라미터를 저장하여 핸들러에서 쉽게 접근 가능
섹션별 세부 요약
1. 쿼리 파라미터 개요
- URL에서
?
이후에 위치한 키-값 쌍은 검색, 필터링, 페이징 등 웹 앱 기능 구현에 사용 - 예시:
/search?q=python&sort=asc
→q="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 인코딩 자동 처리 기능을 통해 클라이언트와의 호환성을 유지할 수 있음