개발/FastAPI

FastAPI 시리즈 6화 - Path, Query, Header, Cookie 파라미터 제대로 다루기

B컷개발자 2025. 5. 5. 13:24

FastAPI의 Path, Query, Header, Cookie 파라미터 처리 방식을 실제 예제 중심으로 정리합니다. 타입 기반 자동 검증과 문서화까지 함께 알아봅니다.

 


 

API 파라미터를 다루는 방법은 4가지

 

FastAPI는 다양한 요청 요소를 자동으로 파싱하고 타입 검증까지 수행합니다.

HTTP 요청에는 다음과 같은 방식으로 파라미터가 포함됩니다:

구분설명FastAPI 처리 방식

Path 파라미터 /users/{id} Path()
Query 파라미터 ?q=search Query()
Header Authorization: ... Header()
Cookie 클라이언트 저장 정보 Cookie()

 

 


 

1. Path 파라미터 – 경로에 포함된 변수

from fastapi import FastAPI, Path

app = FastAPI()

@app.get("/users/{user_id}")
def read_user(user_id: int = Path(..., gt=0)):
    return {"user_id": user_id}

 

  • Path(...): 필수 값 선언
  • gt=0: 0보다 큰 정수만 허용
  • 자동으로 문서화 UI에 조건 설명 추가됨

 

 

🔎 Swagger UI 반영

 

  • 입력 필드: user_id
  • 설명: Must be greater than 0

 


 

2. Query 파라미터 – 

?key=value

 형태

from fastapi import Query

@app.get("/search")
def search_items(q: str = Query(..., min_length=3, max_length=50)):
    return {"query": q}

 

  • Query(...): 필수 쿼리 파라미터
  • min_length, max_length: 문자열 길이 조건 추가

 

 

▶ URL 예시

 

GET /search?q=apple

 

 

▶ 옵션 요약

옵션설명

default 기본값 or 필수 여부 결정 (... = 필수)
min_length / max_length 문자열 조건
regex 정규표현식 매칭 조건

 

 


 

3. Header 파라미터 – 인증이나 토큰에서 사용

from fastapi import Header

@app.get("/header-check")
def check_token(token: str = Header(...)):
    return {"token_received": token}

 

▶ 요청 헤더 예시

GET /header-check HTTP/1.1
Host: localhost:8000
token: secret-token-123

 

🔍 주의

 

  • FastAPI는 Header()를 통해 헤더 키를 자동 소문자로 변환 처리
  • Authorization, X-User-ID 같은 헤더도 처리 가능 (단, 대시(-)는 언더스코어로)
def custom_header(x_user_id: str = Header(...)):
    ...

 

 


 

4. Cookie 파라미터 – 세션, 인증, 추적용 정보

from fastapi import Cookie

@app.get("/read-cookie")
def read_cookie(session_id: str = Cookie(None)):
    return {"session_id": session_id}

 

▶ 쿠키 예시

Cookie: session_id=abcd1234

 

  • 기본값을 None으로 설정하면 쿠키가 없어도 에러 발생 안 함
  • 유저 세션이나 로그인 유지 상태 추적에 활용

 


 

5. 조합 활용 예제

@app.get("/items/{item_id}")
def get_item(
    item_id: int = Path(..., gt=0),
    q: str = Query(None),
    token: str = Header(...),
    session_id: str = Cookie(None)
):
    return {
        "item_id": item_id,
        "query": q,
        "token": token,
        "session_id": session_id
    }

 

  • 실전에서는 여러 파라미터를 조합해 처리하는 경우가 일반적
  • FastAPI는 위치만 잘 지정하면 자동으로 파라미터를 파싱하고 문서화까지 수행

 


 

문서화 반영 구조

 

FastAPI는 각 파라미터마다:

 

  • 유형(Path/Query/Header/Cookie) 구분
  • 타입(str, int, float 등)에 따라 검증 자동 처리
  • 제약 조건(min_length, gt 등) 기반으로 Swagger에 자동 설명 생성

 

덕분에 기획자/프론트엔드/QA와의 협업이 매우 효율적입니다.

 


 

정리 – 요청 파라미터는 FastAPI의 장점이 집약된 기능

파라미터함수 데코레이터설명

Path Path() URL 경로 변수
Query Query() 쿼리 스트링
Header Header() HTTP 헤더
Cookie Cookie() 쿠키 값

모든 파라미터는:

 

  • 타입 기반 자동 파싱
  • 제약 조건 설정 가능
  • 문서 자동 반영
  • 검증 실패 시 422 오류 반환

 


 

다음 글 예고

 

FastAPI 시리즈 7화 - Response 모델과 응답 커스터마이징

에서는 응답 데이터의 포맷을 조절하고,

상태 코드, 헤더, 콘텐츠 타입까지 실전 API 응답 설계 방식을 소개합니다.