쿠키 파라미터
쿠키 파라미터 (Cookie Parameters)
쿼리 파라미터나 경로 파라미터와 비슷한 방식으로, 쿠키(cookie) 파라미터도 정의할 수 있어요.
출처: 공식문서
Cookie 임포트하기 (Import Cookie)
먼저 Cookie를 임포트해요:
from typing import Annotated
from fastapi import Cookie, FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(ads_id: Annotated[str | None, Cookie()] = None):
return {"ads_id": ads_id}
파이썬 3.10+ -
Annotated를 안 쓰는 버전: 가능하면Annotated버전을 쓰는 걸 권해요.from fastapi import Cookie, FastAPI app = FastAPI() @app.get("/items/") async def read_items(ads_id: str | None = Cookie(default=None)): return {"ads_id": ads_id}
쿠키 파라미터 선언하기 (Declare Cookie parameters)
Cookie 파라미터는 Path나 Query와 똑같은 구조로 선언해요. 기본값을 비롯해 추가 검증·주석 파라미터를 모두 지정할 수 있어요:
from typing import Annotated
from fastapi import Cookie, FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(ads_id: Annotated[str | None, Cookie()] = None):
return {"ads_id": ads_id}
파이썬 3.10+ -
Annotated를 안 쓰는 버전:from fastapi import Cookie, FastAPI app = FastAPI() @app.get("/items/") async def read_items(ads_id: str | None = Cookie(default=None)): return {"ads_id": ads_id}
기술적 세부사항:
Cookie는Path와Query의 "자매" 클래스예요. 둘 다 같은 공통Param클래스를 상속해요. 그런데 기억해야 할 게 있는데,fastapi에서Query,Path,Cookie등을 import하면 그것들은 사실 특별한 클래스를 반환하는 함수예요.쿠키를 선언할 때 반드시
Cookie를 써야 해요. 그렇지 않으면 파라미터가 쿠키가 아니라 쿼리 파라미터로 해석되거든요.
브라우저는 쿠키를 특별한 방식으로, 그리고 뒤에서 조용히 처리하기 때문에 JavaScript로 쉽게 건드리지 못한다는 점도 알아 두세요. API 문서 UI(/docs)에 가면 path operation의 쿠키 문서를 볼 수는 있어요. 하지만 데이터를 채우고 "Execute"를 눌러도, 문서 UI는 JavaScript로 동작하니 쿠키는 전송되지 않고, 값을 하나도 안 적은 것처럼 오류 메시지를 보게 돼요.
요약 (Recap)
쿠키는 Cookie로 선언하고, 패턴은 Query와 Path와 똑같아요.