0
点赞
收藏
分享

微信扫一扫

高性能 FastAPI 框架入门精讲-3多应用拆分注册蓝图

西特张 2022-07-13 阅读 73

假如说在一个页面中写了10个函数,因为每个函数都定义了自己的路由,整体页面看起来特别的杂乱无章且臃肿,如果我把这10个函数拆分成10个文件,那么就需要用APIRouter在每个文件中进行路由注册,打个比喻:

如果app=FastAPI()是电源插口,那么APIRouter就是一个多孔的插线板,我们最终只需要把一个或者多个插线板插入到主线路app中即可。

示例:

1在python package文件夹tutorial下创建8个py文件,每个文件都相当于一个独立的应用

在项目目录下创建一个run.py作为整个项目的入口文件

目录结构如下:

#创建6个文件
fastapi-tutorial
coronavirus
__init__.py
tutorial
__init__.py
chapter03.py
chapter04.py
chapter05.py
chapter06.py
chapter07.py
chapter08.py
venv
run.py

2在每个文件中使用APIRouter定义自己的路由

#在每个文件中定义自己的app
#chapter03.py
from fastapi import APIRouter
app03=APIRouter()

#chapter04.py
from fastapi import APIRouter
app04=APIRouter()

#chapter05.py
from fastapi import APIRouter
app05=APIRouter()

#chapter06.py
from fastapi import APIRouter
app06=APIRouter()

#chapter07.py
from fastapi import APIRouter
app07=APIRouter()

#chapter08.py
from fastapi import APIRouter
app08=APIRouter()

3在包的初始化文件init里导入这些子路由

#把自定义的app引入到init文件里
from .chapter03 import app03
from .chapter04 import app04
from .chapter05 import app05
from .chapter06 import app06
from .chapter07 import app07
from .chapter08 import

4在入口文件(主应用)里添加子应用

#在主入口中给自定义的app配置路由
import uvicorn
from fastapi import FastAPI
from tutorial import app03,app04,app05,app06,app07,app08
app = FastAPI()

#把子应用添加到著应用里,prefix就是请求的url
app.include_router(app03, prefix='/chapter03', tags=['第三章 请求参数和验证'])
app.include_router(app04, prefix='/chapter04',tags=['第四章 相应处理和FastAPI配置'])
app.include_router(app05, prefix='/chapter05',tags=[第五章 FastAPI的依赖注入系统])
app.include_router(app06, prefix='/chapter06',tags=[第6章 安全、认证和授权])
app.include_router(app07, prefix='/chapter07',tags=['第7章 FastAPI的数据库操作和多应用的目录结构设计'])
app.include_router(app08, prefix='/chapter08',tags=['第8章 中间件、CORS、后台任务、测试用例'])

if __name__ == '__main__':
uvicorn.run('run:app',host='0.0.0.0',port=8000,reload=True,debug=True,workers=1)

 



举报

相关推荐

0 条评论