首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法覆盖FastAPI/FastAPi-Utils中的依赖项

无法覆盖FastAPI/FastAPi-Utils中的依赖项
EN

Stack Overflow用户
提问于 2020-10-21 15:24:17
回答 1查看 2.6K关注 0票数 1

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

greetings_service.py

代码语言:javascript
复制
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}"

main.py

代码语言:javascript
复制
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" :(
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-21 15:53:12

问题是:

代码语言:javascript
复制
app.dependency_overrides["get_msg"] = get_new_msg()

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

像这样的东西会有用的:

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64466813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档