引子
此篇适合对fastapi啥都不懂的小白,做个大致的介绍,搞明白啥是fastapi,以及fastapi中我们可能会经常看到的术语和概念。下面我们开始。
fastapi
github地址:github.com/fastapi/fas…
目前是python界非常有名的web开发框架,和其他两个django和flask是目前star最多的前三框架,虽然星星数不代表绝对的好坏。但是能反映出一些趋势。而且截至目前,距离第一只差2k的star. 可能你看到时候已经超过django成为第一star的web开发框架。再次还想介绍一个比较热门的django-ninja 下面是区别,各有优势。
fastapi | django | flask | django-ninja | |
---|---|---|---|---|
社区 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
api项目 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
重业务项目 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
性能 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
入门难度 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
总结 | 以简洁的类型提示和自动生成文档著称,上手快且对异步支持友好,性能优秀,适合现代API开发 | Django功能全面,配置复杂,但生态优秀,orm,认证系统等内置模块符合“开箱即用”的设计理念,适合全栈开发需求的开发者 | 轻量灵活,适合API开发,但是需要自行组合模块,导致部分功能实现难度较高。适合有一定经验的开发者 | 结合Django的ORM和FastAPI的API设计,降低了Django原生API开发的复杂度同时获得接近fastapi的性能,但仍需熟悉Django基础 |
uvicron和starlette
特性 | uvicron | Starlette |
---|---|---|
角色 | ASGI 服务器(运行环境) | ASGI 框架(开发工具) |
功能 | 处理网络 I/O 和协议解析 | 提供路由、中间件等开发功能 |
使用场景 | 部署和运行应用 | 编写应用逻辑 |
依赖关系 | 独立于框架(可运行任何 ASGI 应用) | 依赖 Uvicorn 或其他 ASGI 服务器运行 |
小白理解: 类似于“发动机(Uvicorn)”和“车身(Starlette)”的关系,前者提供动力,后者定义功能,共同驱动应用运行
Pydantic
校验工具,实体继承BaseModel,会自动验证请求参数和响应格式
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
异步请求(Async/Await)
用 async def
定义异步函数
@app.get("/async")
async def async_endpoint():
data = await some_long_running_task() # 异步等待耗时操作
return data