Fast API/fastapi배우기
Fast API 배우기 10부 - Cookie 파라미터, Header 파라미터
붕어사랑 티스토리
2021. 11. 1. 16:30
반응형
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"
]
}
반응형