Liquidsのロゴ Liquids

0

FastAPIでリクエストのHeaderを取得する

HTTP
Python
FastAPI

FastAPIでリクエストのHeaderを取得するにはfastapiからimportできるHeaderを用います。
パスオペレーションンデコレーターを適用する関数の引数をHeaderにより定義することで、Headerを取得できます。

また、注意点として以下があります。

  • 引数名は取得したいHeader名にする
  • ハイフン(-)はアンダーバー(_)に読み替える
  • 大文字小文字は区別しない

例えば、Content-Typeであればcontent_typeUser-Agentであればuser_agentです。

動作確認が容易なUser-Agentで確認してみます。

main.py
from fastapi import FastAPI, Header app = FastAPI() @app.get('/',) def index(user_agent = Header()): return user_agent
curl localhost:8000

結果
"curl/8.1.2"% 

取得するHeaderを1つ1つ定義するのではなく、まとめて取得するにはRequestを用います。
引数にRequestで型アノテーションした引数を定義することで使用できます。

main.py
from fastapi import FastAPI, Request app = FastAPI() @app.get('/',) def index(request: Request): print(request.headers.keys()) # ['host', 'connection', 'sec-ch-ua', 'accept', 'sec-ch-ua-mobile', 'user-agent', 'sec-ch-ua-platform' ..... print(request.headers.values()) # ['localhost:8000', 'keep-alive', '"Not_A Brand";v="8", "Chromium";v="120", "Brave";v="120"', 'application/json' .... print(dict(request.headers.items())) # {'host': 'localhost:8000', 'connection': 'keep-alive', 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120" ....

FastAPIのRequestの実態はStarletteで定義されたRequestですので、詳しくは以下のリンクからソースコードを見ることができます。


Liquidsのロゴ Liquids

Liquidsは誰でも投稿・編集ができる技術Wikiコミュニティ📝です。

あなたもLiquidsで技術Wikiを
書いてみませんか?