본문 바로가기

Fastapi

내맘대로 Fastapi docs 정리(Cookie, Header)

Cookie

from fastapi import Cookie, FastAPI

app = FastAPI()

@app.get("/items/")
async def read_items(ads_id: Optional[str] = Cookie(None)):
  • 위와 같이 header의 cookie정보를 Cookie parameter로 받을 수 있다.

  • 하지만 path parameter를 Cookie로 지정하면 Cookie로 인식하지 않고 path parameter로 인식한다.

 

Header

from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
  • 대부분의 표준 헤더는 "마이너스 기호" (-)라고도 하는 "하이픈" 문자로 구분된다.
  • 그러나 파이썬에서 user-agent와 같은 형태의 변수는 유효하지 않기때문에, Header는 기본적으로 매개변수 이름을 언더스코어(_)에서 하이픈(-)으로 변환하여 헤더를 추출하고 기록한다. 따라서 user_agent로 사용가능.
  • 또한 HTTP 헤더는 대소문자를 구분하지 않으므로 "snake_case"로 알려진 표준 파이썬 스타일로 선언할 수 있다.
  • 만약 언더스코어를 하이픈으로 자동 변환을 비활성화해야 할 어떤 이유가 있다면,  Header의 convert_underscores 매개변수를 False로 바꿔주면 된다.
async def read_items(
    strange_header: Optional[str] = Header(None, convert_underscores=False)
):
  • 하지만 몇몇의 http proxy나 server는 underscores를 허용하지 않는 경우가 있으니 유의해서 써야한다.

 

@app.get("/items/")
async def read_items(x_token: Union[List[str], None] = Header(default=None)):
    return {"X-Token values": x_token}
  • 헤더를 다음과 같이 여러개 쓸 수 있는데, 위와 같이 list로 정의해줄 경우 여러개 보낼 수 있다.
curl -X 'GET'   'http://gpu1.neuralworks.io:8000/files/aa/cookie-header'   
-H 'accept: application/json'   
-H 'header-hypen: string' 
-H 'header-hypen: bb'   
-H 'Cookie: cookie=dd'