본문 바로가기
Fast API/fastapi배우기

Fast API 배우기 10부 - Cookie 파라미터, Header 파라미터

by 붕어사랑 티스토리 2021. 11. 1.
반응형

Cookie 파라미터

 

Query 클래스와 Path 클래스와 동일한 사용버븡로 Cookie 클래스를 이용하여 Cookie를 다룰 수 있다

 

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}

 

 

 

Headerr 파라미터

 

마찬가지로 Header 클래스를 이용해 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}

 

반응형

Automatic Conversion

대부분의 헤더들은 하이픈 문자 ( - )로 분리됩니다. 그러나 user-agent 같은 문자는 파이썬에서 유효하지 않습니다. 파이썬은 하이픈 문자로 변수선언이 안되기 때문이죠.

 

그래서 Header 클래서는 undersocre( _ )를 하이픈( - )으로 바꿔주고 헤더를 만듭니다.

 

고로 코드를 작성할 때 user_agent로 사용하면 문제가 없지요.

 

만약 어떠한 이유로 이런 auto conversion을 diable 하고 싶을 경우 convert_underscorres를 false로 지정해주면 됩니다.

 

from typing import Optional

from fastapi import FastAPI, Header

app = FastAPI()


@app.get("/items/")
async def read_items(

    strange_header: Optional[str] = Header(None, convert_underscores=False)

):
    return {"strange_header": strange_header}

 

 

 

 

Duplicate Headers

중복된 헤더들을 받을 수 있습니다. 즉 같은 헤더에 multiple values를 의미합니다.

이러한경우 list를 이용하여 처리할 수 있습니다.

 

아래의 예제는 여러번 올 수 있는 X-Token을 리스트로 처리하는 예제입니다.

 

from typing import List, Optional

from fastapi import FastAPI, Header

app = FastAPI()


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

 

만약 아래와 같은 HTTP 헤더를 보냈다면

X-Token: foo
X-Token: bar

 

아래와 같은 response를 얻습니다.

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

 

반응형

댓글