etl*_*evs 1 python python-3.x fastapi
我想将我的 FastAPI 代码分发到多个文件中,以便团队清楚地了解,因此我尝试使用 APIRoute 代替装饰器,但这样我就无法在其他文件中使用 FastAPI 装饰器。可以说我有main.py这样的
... import statements
rts = [
APIRoute("/{value}", methods=["get"], endpoint=read_item)
]
app = FastAPI(routes=rts)
uvicorn.run("main:app", host="0.0.0.0", port=80)
Run Code Online (Sandbox Code Playgroud)
read_item现在我已经在另一个名为read_item.py我在主文件中导入的文件中定义了方法。
def read_item(value: int | float = None):
results = {"value": value}
return results
Run Code Online (Sandbox Code Playgroud)
如果我开始在主文件中使用@app装饰器,它会变得太大。现在的问题是我无法访问文件@app.on_event中的应用程序装饰器read_items.py,因为应用程序是在main文件中声明的,并且方法需要在read_item文件中声明。FastAPI 有什么办法解决这个问题吗?
FastAPI 中路由的模块化是使用 APIRouter 函数完成的。APIRouter 允许您创建可以组装到 FastAPI 应用程序中的单独的路由器实例。
以下是如何模块化路线的示例:
from fastapi import APIRouter
router = APIRouter()
@router.get("/users/")
async def read_users():
return [{"username": "Foo"}, {"username": "Bar"}]
@router.get("/users/me")
async def read_user_me():
return {"username": "fakecurrentuser"}
@router.get("/users/{username}")
async def read_user(username: str):
return {"username": username}
Run Code Online (Sandbox Code Playgroud)
from fastapi import FastAPI
from app.routers import user
app = FastAPI()
app.include_router(user.router)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |