第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

fastapi 自定義響應類作為默認響應類

fastapi 自定義響應類作為默認響應類

慕無忌1623718 2023-08-22 10:19:07
我正在嘗試使用自定義響應類作為默認響應。from fastapi.responses import Responsefrom bson.json_util import dumpsclass MongoResponse(Response):? ? def __init__(self, content, *args, **kwargs):? ? ? ? super().__init__(? ? ? ? ? ? content=dumps(content),? ? ? ? ? ? media_type="application/json",? ? ? ? ? ? *args,? ? ? ? ? ? **kwargs,? ? ? ? )當我明確使用響應類時,這工作得很好。@app.get("/")async def getDoc():? ? foo = client.get_database('foo')? ? result = await foo.bar.find_one({'author': 'fool'})? ? return MongoResponse(result)但是,當我嘗試將其作為參數傳遞給 FastAPI 構造函數時,僅在從請求處理程序返回數據時似乎不會使用它。app = FastAPI(default_response_class=MongoResponse)@app.get("/")async def getDoc():? ? foo = client.get_database('foo')? ? result = await foo.bar.find_one({'author': 'fool'})? ? return result當我查看下面的堆棧跟蹤時,它似乎仍在使用正常的默認響應,即json response。
查看完整描述

2 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

所以事實證明,默認響應類以及路由上的響應類僅適用于開放的 API 文檔。默認情況下,文檔將記錄每個端點,就像它們返回 json 一樣。


因此,使用下面的示例代碼,每個響應都將被標記為內容類型 text/html。在第二次路由中,這被 application/json 覆蓋


app = FastAPI(default_response_class=HTMLResponse)


@app.get("/")

async def getDoc():

    foo = client.get_database('foo')

    result = await foo.bar.find_one({'author': 'Mike'})

    return MongoResponse(result)



@app.get("/other", response_class=JSONResponse)

async def json():

    return {"json": "true"}

https://img1.sycdn.imooc.com//64e41b5000017b5310160683.jpg

從這個意義上說,我可能應該顯式使用我的類并將默認響應類保留為 JSON,以便將它們記錄為 JSON 響應。



查看完整回答
反對 回復 2023-08-22
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

我求助于猴子補丁


from fastapi import routing as fastapi_routing

from fastapi.responses import ORJSONResponse


def api_route(self, path, **kwargs):

    def decorator(func):

        if type(kwargs["response_class"]) == DefaultPlaceholder:

            kwargs["response_class"] = Default(ORJSONResponse)

        self.add_api_route(

            path,

            func,

            **kwargs,

        )

        return func


    return decorator



fastapi_routing.APIRouter.api_route = api_route


查看完整回答
反對 回復 2023-08-22
  • 2 回答
  • 0 關注
  • 269 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號