fastapi中如何让两个文件共用同一个子路由
时间: 2024-03-09 11:44:13 浏览: 195
如果想要在多个文件中共用同一个子路由,可以在定义 `APIRouter` 对象时,给它传递一个 `prefix` 参数,然后在引用该子路由的文件中,使用 `include_router` 方法将该子路由添加到主路由中。
假设我们有两个文件 `app.py` 和 `routes.py`,其中 `app.py` 是 FastAPI 应用的入口文件,而 `routes.py` 中定义了一个子路由 `/users`。
首先,在 `routes.py` 文件中定义一个 `APIRouter` 对象,并指定 `prefix` 参数为 `/users`:
```python
from fastapi import APIRouter
router = APIRouter(prefix="/users")
@router.get("/")
async def read_users():
return {"msg": "List of Users"}
@router.get("/{user_id}")
async def read_user(user_id: int):
return {"msg": f"Details of User {user_id}"}
```
然后,在 `app.py` 文件中导入 `routes.py` 文件,并使用 `include_router` 方法将 `router` 对象添加到主路由中:
```python
from fastapi import FastAPI
from routes import router
app = FastAPI()
app.include_router(router)
```
这样,当我们访问 `/users/` 或 `/users/{user_id}` 时,FastAPI 将会调用 `routes.py` 文件中定义的 `read_users` 和 `read_user` 函数。
注意,在定义子路由时,也需要避免路径冲突。如果在 `app.py` 和 `routes.py` 中都定义了 `/users` 路径,那么以 `app.py` 中的定义为准。
阅读全文