본문 바로가기

FastAPI

헤더, 쿠키 매개변수

헤더/쿠키 매개변수는 앞서 배운 매개변수들과는 다른 점이 있습니다. 이 매개변수를 다루기 위해서는 반드시 Header, Cookie 클래스를 사용해야합니다. 

 

머전 쿠키를 테스트 해보겠습니다.

 

쿠키 가져오기 위한 코드를 다음과 같이 작성해주세요 !! 

import uvicorn
from fastapi import FastAPI, Cookie

app = FastAPI()


@app.get("/cookie")
def get_cookies(ga: str = Cookie(None)):
    return {"ga": ga}

if __name__ == "__main__":
	uvicorn.run("main:app", reload = True)

 

쿠키는  사이트에 정보를 수집하기 위해서 많이 사용하는 프로그램들입니다.

위의 코드에서 ga는 구글 애널리틱스가 굽는 쿠키 이름입니다.

 

HTTPie를 사용해서 다음과 같이 요청을 보낼 수 있습니다.

$ http :8000/cookie Cookie:ga=GA12.3.4

 

HTTPie에서 쿠키는 Cookie:<key>=<value>;<key>=<value>와 같이 작성합니다. ;은 구분자입니다.

 

다음에 알아볼 것은 Header입니다.

HTTP 헤더는 종료도 많고 컴스텀 헤더들도 정말 많이 사용합니다.

다음 코드는 헤더의 예시 코드입니다.

 

import uvicorn
from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/header")
def get_headers(x_token: str = Header(None, title="토큰")):
    return {"X-Token": x_token}

if __name__ == "__main__":
	uvicorn.run("main:app", reload = True)

 

헤더에서 X-접두어는 사용자 정의의 헤더라는 것을 의미합니다. 이렇게 사용하는 이유는 표준 헤더와 구분을 짓기 위해서 사용한다고 헙니다. X-접두어는 관례적으로 많이 사용한다고 하니 기억해두어야 한다고 합니다.

 

하지만 python에서는  "-"을 변수명으로 사용하지 못하기 때문에 "_" 언더스코어를 대신 사용을 합니다.

 

다음과 같이 HTTPie의 요청을 주어서 응답을 확인 할 수 있습니다.

 

$ http :8000/header X-Token:some.secret.token

 

Header는 다른 클래스와 다르게 convert_underscores 옵션을 갖는데 False를 줄 경우 하이픈을 언더스코어로 변환하지 않습니다. X-token이 아니라 X_Token이라는 헤더를 위해 존재하는 옵션입니다. 하지만 애초에 언더스코어를 사용하는 건 관례를 벗어나므로 웬만해서는 하지 않아야 합니다.

 

'FastAPI' 카테고리의 다른 글

RDB 연동 - 2  (0) 2024.01.30
RDB 연동 - 1  (0) 2024.01.29
FastAPI 데이터 검증  (1) 2024.01.25
응답모델 - 2  (0) 2024.01.21
응답모델 - 1  (0) 2024.01.20