在使用FastAPI 开发项目时,不可能将所有路径操作都写在一个文件中,那样不利于划分模块和维护代码,FastAPI 提供了APIRouter 蓝图技术,可以让你将功能紧密相连的代码写一个模块里,合理的划分项目的结构。
下面以一个简单的例子来讲解如何使用FastAPI 的蓝图技术
创建一个web项目 router-demo, 项目结构如下
└─router-demo
│ app.py
│ __init__.py
│
├─routers
│ │ auth.py
│ │ user.py
│ │ __init__.py
routers 目录里专门用来放置各个路由模块,auth模块专门用于处理登录相关的请求,user模块专门用来处理和user信息相关的请求,auth.py 内容如下
from fastapi import APIRouter
auth_router = APIRouter()
@auth_router.get('/login')
def login():
return '登录功能'
@auth_router.get('/logout')
def logout():
return '退出登录'
@auth_router.get('register')
def register():
return '注册功能'
创建APIRouter实例,使用auth_router定义路径操作,再来看user.py 的内容
from fastapi import APIRouter
user_router = APIRouter(prefix='/users')
@user_router.get("/")
def all_users():
return 'all users'
@user_router.get("/info/{uid}")
def user_info(uid: int):
return {'uid': uid}
创建user模块蓝图时,我将prefix 参数设置为/users, 这个蓝图里定义的路径操作都要以/users 开头。
最后最关键的一步,创建app.py 文件
from fastapi import FastAPI
from routers.user import user_router
from routers.auth import auth_router
app = FastAPI()
app.include_router(user_router)
app.include_router(auth_router)
在app.py 文件里,我没有定义路径操作,而是引入了前面定义的路由,用include_router方法进行注册,接下来启动服务,在浏览器里分别访问
http://127.0.0.1:8000/login
http://127.0.0.1:8000/users/
服务可以正常响应。
QQ交流群: 211426309