发布时间:2025-11-05 05:53:48 来源:码上建站 作者:IT科技

FastAPI 是型项一个用于构建 API 的现代、快速(高性能)的目模 web 框架,使用 Python 3.6+ 并基于标准的板框 Python 类型提示。
关键特性:
快速:可与 NodeJS 和 Go 比肩的型项极高性能(归功于 Starlette 和 Pydantic)。最快的目模 Python web 框架之一。 高效编码:提高功能开发速度约 200% 至 300%。板框 更少 bug:减少约 40% 的型项人为(开发者)导致错误。 智能:极佳的目模编辑器支持。处处皆可自动补全,板框减少调试时间。型项 简单:设计的目模易于使用和学习,阅读文档的板框时间更短。 简短:使代码重复最小化。型项通过不同的目模参数声明实现丰富的功能。bug 更少。板框 健壮:生产可用级别的代码。还有自动生成的交互式文档。 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。以上这段是云南idc服务商 FastAPI 官方文档的介绍,通过我自己的使用,发现虽然效率提升没有官方说得那么高,但是确实会快很多,而且我认为这个框架的代码书写更 pythonic 一点,如果用习惯了,在写别的 Python 代码时,也更加规范一些。
熟悉 Flask 的人上手 FastAPI 可能会比较快一些,一个 py 脚本就能搭起来一个网站,但是我们开发项目的时候,肯定不会把所有逻辑都塞在一个脚本里面,因此就需要提供一个像 Django 那样的完整项目框架,业务开发只要按照固定的规则添加就行了。虽然官方提供了一个项目框架模板,但是由于 FastAPI 自由度比较高,所以大家可以根据自己的习惯去实现一个项目框架,我就根据自己使用 Django 的习惯实现了一个我认为比较合适的框架结构。下面就是亿华云计算大概的介绍。
使用FastAPI + MySql + Tortoise-orm 作为主要数据库操作,项目结构参考GitHub上两个项目:
CoderCharm / fastapi-mysql-generator FastAPI-demo全局登录认证(除以上接口外,其余接口均进行登录认证)
app = FastAPI( debug=settings.DEBUG, title=settings.TITLE, description=settings.DESCRIPTION, docs_url=settings.DOCS_URL, redoc_url=settings.REDOC_URL, dependencies=[Depends(jwt_authentication)] )全局进行 Depends(jwt_authentication) 依赖注入
接口权限认证首先通过 auth/add 和 auth/del 接口进行权限配置
@router.get( "/info", summary="获取当前用户信息", name="获取当前用户信息", response_model=schema.UserOut, response_model_exclude_unset=True, dependencies=[Depends(Authority(user,check))] )在接口上添加 Depends(Authority(user,check)) 依赖注入来判断权限
操作权限认证在接口中进行特殊权限认证,只要使用check_authority函数判断即可,如果无权限会抛出异常
await check_authority(f{request.state.user.username},auth,add)配置文件:
core/config/development_config.py 和 production_config.py
修改 API 文档默认地址
为了通过权限认证,将 API 文档地址修改为包含 openapi 的 URL
# 文档地址 默认为docs DOCS_URL: str = "/openapi/docs" # 文档关联请求数据接口 OPENAPI_URL: str = "/openapi/openapi.json" # redoc 文档 REDOC_URL: Optional[str] = "/openapi/redoc" 超级管理员设置用户角色为 super 的用户为超级管理员
SUPER_USER: str = super数据库使用 Tortoise-orm 库,因为我一直在使用 Django,Django 自有一套 ORM 模型操作,用起来比较方便也比较熟悉,很多人使用 sqlalchemy,我觉得这个不方便,而 Tortoise-orm 是借鉴了 Django ORM 来实现的异步数据库操作库,对于使用了 Django 的人来讲比较友好
【编辑推荐】
虚拟服务器管理的6个优秀实践 2021年15种主导软件开发行业发展的技术趋势 5款电脑装机必备软件,一个比一个厉害,用过之后就离不开了 太牛了,这是免费源码下载我见过SpringCloud微服务架构讲的详细的|附面试题 中国三大电信运营商纽交所被退市亏了吗?