FastAPI介绍 (一)

187 阅读2分钟

引子

此篇适合对fastapi啥都不懂的小白,做个大致的介绍,搞明白啥是fastapi,以及fastapi中我们可能会经常看到的术语和概念。下面我们开始。

fastapi

github地址:github.com/fastapi/fas…

文档地址:fastapi.tiangolo.com/

目前是python界非常有名的web开发框架,和其他两个django和flask是目前star最多的前三框架,虽然星星数不代表绝对的好坏。但是能反映出一些趋势。而且截至目前,距离第一只差2k的star. 可能你看到时候已经超过django成为第一star的web开发框架。再次还想介绍一个比较热门的django-ninja 下面是区别,各有优势。

fastapidjangoflaskdjango-ninja
社区⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
api项目⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
重业务项目⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
入门难度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
总结以简洁的类型提示和自动生成文档著称,上手快且对异步支持友好,性能优秀,适合现代API开发Django功能全面,配置复杂,但生态优秀,orm,认证系统等内置模块符合“开箱即用”的设计理念,适合全栈开发需求的开发者轻量灵活,适合API开发,但是需要自行组合模块,导致部分功能实现难度较高。适合有一定经验的开发者结合Django的ORM和FastAPI的API设计,降低了Django原生API开发的复杂度同时获得接近fastapi的性能,但仍需熟悉Django基础

uvicron和starlette

特性uvicronStarlette
角色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