fastapi(19)-ミドルウェア

6323 ワード

fastapiアプリケーションにミドルウェアを追加できる「ミドルウェア」は、各リクエストが特定のパス操作で処理される前に各リクエストとともに使用できる関数です.および、以前の各応答を返します.
  • アプリケーションから各リクエスト
  • を受信します.
  • は、その後、要求に対して何らかの操作を実行したり、必要なコードを実行したりすることができる.
  • は、その後、アプリケーションの残りの部分によって処理されるべき要求を伝達する(いくつかのパスによって操作される).
  • は、アプリケーションによって生成された応答(いくつかのパスによって動作)
  • を取得する.
  • 応答に応答したり、必要なコードを実行したりすることができます.
  • は、応答を返す.middlewareを作成ミドルウェアを作成するには@appを使用します.middleware(「http」)アクセサリー.そのうち:1、request 2、call_の受信nextはrequestをパラメータとして、対応するパスに渡し、最後にresponse 3に戻り、最後にresponseをさらに変更してから戻ります.
  • import time
    
    from fastapi import FastAPI, Request
    
    app = FastAPI()
    
    
    @app.middleware("http")
    async def add_process_time_header(request: Request, call_next):
        start_time = time.time()
        response = await call_next(request)
        process_time = time.time() - start_time
        response.headers["X-Process-Time"] = str(process_time)
        return response
    

    CORS前後端クロスドメイン通信.
    http://localhost https://localhost http://localhost:8080この3つのアドレスはいずれも異なるドメインに属し、同じドメイン名であっても、異なるポートプロトコルはドメイン間に属します.ドメイン間で実現するには、バックエンドに許可されたドメインのリストがあるか、「」を使用してすべてのドメインをプロビジョニングする必要があります.しかし、プロビジョニングは、証明書に関連する内容:cookie、認可headersを含まないタイプのみを許可します.したがって、すべての状況に適用するために、許可されたドメインを指定することが望ましい.CORSMiddlewareを使用すると、fastapiでCORSMiddlewareを使用できます.1、import CORSMiddleware 2、許可ドメインリスト(文字列として)の作成3、FastAPIアプリケーションへのミドルウェアとしての追加.バックエンドが許可されているかどうかを指定することもできます:1、証明書(授権ヘッダー、Cookieなど).2、特定のHTTPメソッド(POST,PUT)またはワイルドカード付きのすべてのメソッド「」.3、特定のHTTPヘッダまたはすべてのワイルドカード"*".
    from fastapi import FastAPI
    from fastapi.middleware.cors import CORSMiddleware
    
    app = FastAPI()
    
    origins = [
        "http://localhost.tiangolo.com",
        "https://localhost.tiangolo.com",
        "http://localhost",
        "http://localhost:8080",
    ]
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=origins,
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )
    
    
    @app.get("/")
    async def main():
        return {
         "message": "Hello World"}
    

    ブラウザがドメイン間コンテキストで使用できるように、特定のソース、メソッド、またはヘッダーを明示的に有効にする必要があります.以下のパラメータをサポートします:1、allow_origins-ドメイン間リクエストのソースリストを許可する必要があります.任意のソースを許可するために[’]を使用できます.2、allow_origin_regex-ドメイン間リクエストを許可された原点と一致する正規表現文字列.例えば.'https://..example.org’. 3、allow_Methods-ドメイン間リクエストで許可されるべきHTTPメソッドのリスト.デフォルトは[GET]です.['']を使用すると、すべての標準メソッドを許可できます.4、allow_Headers-ドメイン間リクエストでサポートされるべきHTTPリクエストヘッダのリスト.既定は[]です.すべてのヘッダーを許可するには、[’]を使用します.のAccept、Accept-Language、Content-Language、Content-Typeヘッダは、常にCORSリクエストを許可します.5、allow_credentialsは、ドメイン間リクエストがクッキーをサポートすべきであることを示す.デフォルトはFalseです.6、expose_Headers-ブラウザがアクセスできるすべての応答ヘッダを示します.既定は[]です.7、max_age-ブラウザキャッシュCORS応答の最長時間(秒単位)を設定します.デフォルトは60です.