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

假如说在一个页面中写了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 app08

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)

 

posted @ 2022-01-03 15:53  linuxTang  阅读(371)  评论(0编辑  收藏  举报