본문으로 건너뛰기
백엔드 기초집: Python FastAPILESSON 05

Path Parameter와 Query Parameter

난이도초급
예상 시간35분
선수지식이전 강의

5강. Path Parameter와 Query Parameter

1. 이번 강의에서 해결할 문제

하나의 기록을 고르거나 특정 게임의 기록만 조회하려면 URL에서 값을 받아야 합니다. 식별자와 선택 조건을 구분해 설계합니다.

2. 학습 목표

3. 핵심 개념

Path Parameter는 /records/12처럼 특정 리소스의 정체성을 나타내며 보통 필수입니다. Query Parameter는 /records?game_name=Rule+Break&limit=20처럼 필터, 정렬, 페이지 크기 같은 선택 조건에 적합합니다. FastAPI는 타입 힌트와 Pydantic 검증을 OpenAPI 문서에도 반영합니다.

4. 단계별 코드 예시

파일 경로: game-ranking-api/app/main.py

app/main.py
from typing import Annotated

from fastapi import FastAPI, Path, Query

app = FastAPI(title="Game Ranking API")


@app.get("/records/{record_id}")
def get_record(
record_id: Annotated[int, Path(ge=1)],
) -> dict[str, int]:
return {"record_id": record_id}


@app.get("/records")
def list_records(
game_name: Annotated[str | None, Query(min_length=1, max_length=80)] = None,
limit: Annotated[int, Query(ge=1, le=100)] = 20,
) -> dict[str, object]:
return {"game_name": game_name, "limit": limit, "items": []}

실행 위치: game-ranking-api/

python -m uvicorn app.main:app --reload
Invoke-RestMethod 'http://127.0.0.1:8000/records/3'
Invoke-RestMethod 'http://127.0.0.1:8000/records?game_name=Rule%20Break&limit=10'
Invoke-WebRequest 'http://127.0.0.1:8000/records/0' -SkipHttpErrorCheck

5. 코드가 동작하는 이유

라우트의 {record_id}와 함수 인자 이름이 연결됩니다. ge=1은 1 이상을, le=100은 100 이하를 요구합니다. game_name은 기본값이 None이므로 선택 입력이며, FastAPI가 문자열과 정수 변환 및 오류 응답을 자동 처리합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

Path Parameter와 Query Parameter 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Path Parameter와 Query Parameter” 내용을 실제 작업에 적용한 설명으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2“Path Parameter와 Query Parameter”에서 ‘목록 필터를 /records/{game_name}으로 만듭니다.’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

5강. Path Parameter와 Query Parameter 미완료 상태