Fast API 쿠키, 헤더 받기

Junha Kim·2021년 1월 7일
0

FastAPI

목록 보기
13/16
post-custom-banner

Query와 Path와 같이 쿠키와 헤더를 설정할 수 있다.


from typing import Optional

from fastapi import Cookie, FastAPI

app = FastAPI()

@app.get("/items/")
async def read_items(ads_id: Optional[str] = Cookie(None)):
    return {"ads_id": ads_id}

CookiePathQuery의 형제 Class이며 Param클래스를 똑같이 상속받는다. 이 말은 Cookie또한 함수라는 것!


Cookie 설정한 것과 똑같이 하면 된다. Header 또한 함수!

from typing import Optional

from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
    return {"User-Agent": user_agent}

하지만 Header에서 특별한 점은 대문자를 자동으로 소문자화 하고, 하이픈(-)을 자동으로 언더바(_)로 변환한다는 것이다.

Request Header에는 user-agent 처럼 헤더명이 -으로 이어져있다. 하지만 이는 파이썬에서는 허용되지 않은 변수 이름이며, Fast API는 이를 _로 snake case로 자동으로 변환을 해준다.

이러한 옵션을 사용하지 않으려면 아래와 같이 작성하면 된다.

@app.get("/items/")
async def read_items(
    strange_header: Optional[str] = Header(None, convert_underscores=False)
):
    return {"strange_header": strange_header}

Header 중복 값 받기

헤더에 중복된 내용이 있다면, 이는 1개의 헤더에 여러개 value가 있다는 것이다.

X-Token: foo
X-Token: bar

그렇다면 해당 value들을 받기 위해 List로 설정하면 된다.

@app.get("/items/")
async def read_items(x_token: Optional[List[str]] = Header(None)):
    return {"X-Token values": x_token}

결과 값은 아래처럼 나오게 된다.

{
    "X-Token values": [
        "bar",
        "foo"
    ]
}
post-custom-banner

0개의 댓글