第12节,FastAPI 蓝图技术APIRouter

在使用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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案