【FastAPI】リクエスト・レスポンスヘッダーを追加【header】

FastAPIでのheaderのパラメーターの受け取り方をご紹介いたします。

headerの操作は、JWTtoken認証などで用いられる必須の機能です。

今回は、ヘッダーのリクエスト・レスポンスの記載方法についてご紹介いたします。

この記事のサンプルコード

目次

リクエストヘッダー

リクエストヘッダーを追加するためにはfastapiからHeaderをインポートします。

基本形

https://fastapi.tiangolo.com/ja/tutorial/header-params/?h=header#header

from typing import Optional
from fastapi import Header
~~~

@router.get('/header')
def example(custom_header: Optional[str] = Header(None)):
    return f"{custom_header}"

ヘッダーを使用する場合には、Headerを用いる必要があります。パスパラメーターやリクエストパラメータ―との違いを判別するためです。

作成したAPIのドキュメントを見てみましょう。Curl部分を確認してみると-Hでヘッダーが追加されていますね。

重複するヘッダーの受取り方

同じヘッダーで複数の値を受け取る場合にはリストで受け取れるようにします。

https://fastapi.tiangolo.com/ja/tutorial/header-params/?h=header#_3

from typing import Optional, List
~~~
custom_header: Optional[List[str]] = Header(None)

Listを用いるだけです。確認してみましょう。

リクエストヘッダーを確認すると・・・

 -H 'custom-header: header1,header2,header3'

受けとれてますね!

レスポンスヘッダー

https://fastapi.tiangolo.com/ja/advanced/response-headers/?h=response+header#response-headers

レスポンスヘッダーは関数の引数にResponseを用い、レスポンスヘッダーを付与します。

response.headers['response_name'] = "response_value"形式で追加します。

from fastapi import Response

~~~

@app.get('/header')
def custom_header(
    response: Response,
    custom_header: Optional[List[str]] = Header(None)
    ):
    response.headers['custom_response_header'] = ". ".join(custom_header)
    return f"{custom_header}"

ドキュメントを確認してみましょう。

200Response headersを確認すると、追加されていることが確認できました!

この記事のサンプルコード

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる