【问题标题】:Unable to override dependency in FastAPI/FastAPi-Utils无法覆盖 FastAPI/FastAPi-Utils 中的依赖项
【发布时间】:2020-10-21 15:24:17
【问题描述】:

这可能是一个新手问题。我无法覆盖这个简单的 2 个文件 FastAPI 项目中的问候消息。你能告诉我我可能做错了什么吗?非常感谢您的帮助。

greetings_service.py

from fastapi import Depends
from fastapi_utils.cbv import cbv
from fastapi_utils.inferring_router import InferringRouter


router = InferringRouter()

def get_msg():
    return "Original Message"

@cbv(router)
class GreetingsService:
    @router.get("/")
    async def greet(self, msg: str = Depends(get_msg)):
        return f"Hello from FastAPI {msg}"

ma​​in.py

from fastapi import FastAPI
from starlette.testclient import TestClient

import greetings_service

app = FastAPI()
app.include_router(greetings_service.router)

def get_new_msg():
    return "New Message"

//Tried this, doesn't work
#app.dependency_overrides["get_msg"] = get_new_msg()

//These 2 lines doesn't work too
app.dependency_overrides["get_msg"] = get_new_msg()
greetings_service.router.dependency_overrides_provider = app

client = TestClient(app)

res = client.get("/")
print(res.content) #"Hello from FastAPI Original Message" :(

【问题讨论】:

    标签: python fastapi


    【解决方案1】:

    问题在于:

    app.dependency_overrides["get_msg"] = get_new_msg()
    

    您将依赖项作为字符串而不是实际依赖项传递。

    这样的事情会起作用:

    from fastapi import FastAPI
    from starlette.testclient import TestClient
    
    import greetings_service
    
    app = FastAPI()
    app.include_router(greetings_service.router)
    
    
    def get_new_msg():
        return "New Message"
    
    
    app.dependency_overrides[greetings_service.get_msg] = get_new_msg
    
    client = TestClient(app)
    res = client.get("/")
    print(res.content)
    

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 2021-03-25
      • 2021-05-22
      • 2022-07-11
      • 2014-03-18
      • 2021-01-23
      • 2022-07-20
      • 1970-01-01
      相关资源
      最近更新 更多