• 當前位置:首頁 > IT技術 > Windows編程 > 正文

    FastAPI(53)- Response Headers 響應設置 Headers
    2021-10-04 16:38:33

    前言

    ?

    有兩種實現場景

    • 路徑操作函數聲明 Response 參數來設置 Header
    • 在函數內,通過 return Response 來設置?Header

    ?

    路徑操作函數聲明 Response 參數來設置 Header

    from fastapi import FastAPI, Response
    
    app = FastAPI()
    
    
    @app.get("/item")
    # 路徑操作函數聲明一個 Response 類型的參數
    async def get_item(response: Response):
        response.headers["x-token"] = "token_!@#%#$^$%&"
        return {"name": "設置 headers"}
    • 然后可以像往常一樣返回需要的任何對象(字典、數據庫模型等)
    • 如果聲明了一個 response_model,它仍將用于過濾和轉換返回的對象
    • FastAPI 將使用該臨時響應來提取 headers(還有 cookies、status_code),并將它們放入包含返回值的最終響應中,由任何 response_model 過濾
    • 還可以在依賴項中聲明 Response 參數,并在其中設置 headers、cookies

    ?

    請求結果

    ?

    聲明 response_model 和使用依賴項的栗子

    from fastapi import FastAPI, Response, Depends
    from pydantic import BaseModel
    
    app = FastAPI()
    class Item(BaseModel):
        id: str
        name: str
    
    
    async def depnds_header(response: Response):
        response.headers["x-depends-token"] = "************"
    
    
    @app.get("/item2", dependencies=[Depends(depnds_header)], response_model=Item)
    async def get_item():
        return {"id": "12345", "name": "測試 dependencies和response_model", "age": 24}

    ?

    請求結果

    ?

    通過 return Response 來設置 Header

    from fastapi import FastAPI, Response
    from fastapi.responses import JSONResponse
    
    app = FastAPI()
    @app.get("/items")
    async def get_item():
        response = JSONResponse(content={"name": "JSONResponse"})
        response.headers["x-auth-token"] = "XXX_TOKEN"
        return response

    ?

    請求結果

    ?

    headers 的源碼

    它是 Starlette 庫的 Response 類里面的方法哦,加了 @property 變成屬性,就可以訪問私有屬性 _headers 了

    ?

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码