본문 바로가기

웹 프레임워크/FastAPI

FastAPI - 07 (헤더(Header) 매개변수)

출처: https://fastapi.tiangolo.com/tutorial/header-params/
아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다.

헤더 매개변수(Header Parameters)

헤더 매개변수를 사용하여 헤더의 값을 가져올 수 있습니다.

from typing import Union

from fastapi import FastAPI, Header # Header import

app = FastAPI()


@app.get("/items/")
# Header를 사용하여 user_agent의 메타데이터를 지정
async def read_items(user_agent: Union[str, None] = Header(default=None)):
    return {"User-Agent": user_agent}
http://localhost:8000/items/

위의 url로 접속 하면 아래와 같이 헤더의 정보를 가져옵니다.

{
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

중복 헤더

헤더 매개변수를 사용하여 중복 헤더의 값을 가져올 수 있습니다.

아래는 X-Token의 중복된 헤더의 값을 가져오는 예시 입니다.

from typing import List, Union

from fastapi import FastAPI, Header

app = FastAPI()


@app.get("/items/")
# 중복된 헤더 값을 가져오기 위해 List[str]로 지정
async def read_items(x_token: Union[List[str], None] = Header(default=None)):
    return {"X-Token values": x_token}

헤더(X-Token)의 값을 중복으로 요청 하기 위해 아래의 Python 코드를 사용합니다.
header_test.py

# 만얀 requests가 설치 되어 있지 않다면 아래의 명령어로 설치 합니다.(CMD 또는 shell )
# pip install requests
import requests

# 요청할 URL 설정
url = 'http://localhost:8500/items/'

# X-Token 값으로 foo, bar 2개를 설정
headers = {
    'X-Token': 'foo, bar'
}

# GET 요청 보내기
response = requests.get(url, headers=headers)

# 응답 내용 출력
print(response.status_code)
print(response.text)

위와 같이 소스를 작성 하고 아래와 같이 실행합니다.

python header_test.py
# ubuntu
# python3 header_test.py

아래와 같은 결과가 나옵니다.

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

status_code가 200이므로 정상적으로 처리 되었고 X-Token values의 값으로 foo, bar가 나옵니다.