FastAPI 框架,高性能,易于学习,高效编码,生产可用
这是FastAPI官网对框架的描述
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
关键特性:
-
快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
-
高效编码:提高功能开发速度约 200% 至 300%。*
-
更少 bug:减少约 40% 的人为(开发者)导致错误。*
-
智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
-
简单:设计的易于使用和学习,阅读文档的时间更短。
-
简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
-
健壮:生产可用级别的代码。还有自动生成的交互式文档。
-
标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
摘自FastAPI官网
如果用于生产,为了使代码更加易读、便于维护,需要将代码拆分为各个模块。
官网给出了多模块应用的目录结构:
├── app # 「app」是一个 Python 包
│ ├── __init__.py # 这个文件使「app」成为一个 Python 包
│ ├── main.py # 「main」模块,例如 import app.main
│ ├── dependencies.py # 「dependencies」模块,例如 import app.dependencies
│ └── routers # 「routers」是一个「Python 子包」
│ │ ├── __init__.py # 使「routers」成为一个「Python 子包」
│ │ ├── items.py # 「items」子模块,例如 import app.routers.items
│ │ └── users.py # 「users」子模块,例如 import app.routers.users
│ └── internal # 「internal」是一个「Python 子包」
│ ├── __init__.py # 使「internal」成为一个「Python 子包」
│ └── admin.py # 「admin」子模块,例如 import app.internal.admin
在这里,可以把整个app看作一个python包,但这里只有FastAPI的基础功能。如果自己需要一些日志、配置,可将它放在与app目录平级的目录下。我自己用的目录结构如下
├── alembic # alembic数据迁移自动生成模块
│ ├── README
│ ├── env.py
│ ├── script.py.mako
│ └── versions
│ └── 78864af08bb7_first_commit.py
├── alembic.ini # alembic配置文件
├── apis # FastAPI应用
│ ├── __init__.py
│ ├── apis.py # FastAPI总接口
│ ├── login # login模块
│ │ ├── __init__.py
│ │ └── controller.py # login相关方法
│ └── users # user模块
│ ├── __init__.py
│ └── controller.py # user相关方法
├── core # 基础配置
│ ├── __init__.py
│ ├── config.py
│ └── db.py
├── logs # 日志
│ └── 2022-05-31.log
├── main.py # FastAPI启动方法,调用apis.apis import api_router
├── main2.py
├── models # 数据表模块
│ ├── __init__.py
│ ├── base.py # 数据表基础模块
│ ├── record # 操作日志表
│ │ ├── __init__.py
│ │ └── models.py
│ └── user # 用户表
│ ├── __init__.py
│ └── models.py
├── requirements.txt
├── run.sh # 启动脚本
├── schema # 数据处理
│ ├── __init__.py
│ └── user.py
└── utils # 工具包
├── Record.py
├── __init__.py
└── logger.py # 日志模块
以上目录结构能满足自己大部分的开发需求
因为账号问题,代码等几天再上传
以后会在此模板上继续更新
网友评论