所有文章 > API产品 > FastAPI,一个快速开发 API 的 Python 框架!

FastAPI,一个快速开发 API 的 Python 框架!

在现代的 Web 开发中,API 已经成为不可或缺的部分。不管是移动端、Web前端,还是微服务架构,API 都是这些系统之间沟通的桥梁。而在众多 Python API 框架中,有一个工具因为“速度快、语法简单、功能强大”脱颖而出——它就是 FastAPI

如果你还没用过 FastAPI,那可能会觉得它只是一款普通的框架。但事实上,FastAPI 是专为高效开发现代 API 而设计的利器,不仅能让你的代码优雅,还能让开发效率翻倍!

今天,我就带大家深入了解 FastAPI,它为什么这么快、怎么用,以及我的开发经验。


什么是 FastAPI?

FastAPI 是一个基于 Python 的 高性能 Web 框架,专注于快速构建 API 服务。它的设计目标是:

  1. 快速:用最少的代码实现高效的 API 服务。
  2. 现代化:充分利用 Python 的类型注解和异步编程,让开发更简单。
  3. 自动化:内置 Swagger 文档和数据验证,无需额外配置。
  4. 高性能:基于 Starlette 和 Pydantic,性能媲美 Node.js 和 Go。

一句话概括:FastAPI 是为高性能、高效率、高可读性 API 开发而生的框架。


为什么选择 FastAPI?

以下是 FastAPI 相比其他框架(如 Flask、Django Rest Framework)的优势:

1. 高性能

FastAPI 基于 ASGI(Asynchronous Server Gateway Interface),支持异步编程,性能极高。其响应速度和吞吐量可媲美 Node.js 和 Go。

2. 类型安全

FastAPI 利用了 Python 的类型注解,让代码更加安全、清晰。例如,参数类型和返回类型都可以明确指定,减少了运行时错误。

3. 自动生成 API 文档

FastAPI 内置了自动生成交互式文档的功能,支持 Swagger 和 Redoc,无需额外安装插件。文档不仅易于查看,还可以直接测试接口。

4. 数据验证和序列化

FastAPI 集成了 Pydantic,用于数据校验和序列化。输入的参数会被自动验证,错误会以统一格式返回,开发者无需手动处理。

5. 易上手

相比 Flask,FastAPI 的代码更简洁;相比 Django,它更轻量级,非常适合快速开发。


如何安装 FastAPI?

安装 FastAPI 和运行服务所需的 Uvicorn 只需两行命令:

pip install fastapi
pip install uvicorn[standard]

快速上手:第一个 FastAPI 应用

以下是一个最基础的 FastAPI 示例,用来创建一个简单的 REST API:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
defread_root():
return {"message": "Hello, FastAPI!"}

@app.get("/items/{item_id}")
defread_item(item_id: int, q: str = None):
return {"item_id": item_id, "query": q}

保存为 main.py,然后运行:

uvicorn main:app --reload

打开浏览器访问 http://127.0.0.1:8000/,你会看到:

{"message": "Hello, FastAPI!"}


FastAPI 的核心功能

FastAPI 提供了一系列现代化的功能,以下是一些常用的核心功能:


1. 路由与参数处理

FastAPI 支持通过路径参数、查询参数和请求体接收数据,语法直观。

路径参数

@app.get("/users/{user_id}")
defget_user(user_id: int):
return {"user_id": user_id}

访问 http://127.0.0.1:8000/users/42,返回:

{"user_id": 42}

查询参数

@app.get("/search")
defsearch_items(keyword: str, limit: int = 10):
return {"keyword": keyword, "limit": limit}

访问 http://127.0.0.1:8000/search?keyword=FastAPI&limit=5,返回:

{"keyword": "FastAPI", "limit": 5}

2. 请求体处理和数据验证

FastAPI 使用 Pydantic 模型来处理请求体数据,同时自动进行校验。

定义请求体模型

from pydantic import BaseModel

classItem(BaseModel):
name: str
price: float
is_offer: bool = None

接收请求体

@app.post("/items/")
defcreate_item(item: Item):
return {"item": item}

向 http://127.0.0.1:8000/items/ 发送以下 JSON 数据:

{
"name": "Laptop",
"price": 999.99,
"is_offer": true
}

服务器会返回:

{
"item": {
"name": "Laptop",
"price": 999.99,
"is_offer": true
}
}

3. 异步支持

FastAPI 原生支持异步编程,可以轻松处理高并发请求。

import asyncio

@app.get("/async")
asyncdefasync_endpoint():
await asyncio.sleep(1)
return {"message": "This is an async response!"}

异步接口在高并发场景下的表现尤为出色。


4. 自动生成 API 文档

FastAPI 内置了 Swagger 和 Redoc 文档,访问以下路径即可查看:

  • Swagger 文档http://127.0.0.1:8000/docs
  • Redoc 文档http://127.0.0.1:8000/redoc

文档不仅展示了所有接口,还允许你在线测试,非常方便!


5. 中间件和依赖注入

FastAPI 提供了灵活的中间件和依赖注入功能,可以轻松实现请求前后处理、数据库连接等任务。

示例:自定义中间件

from fastapi import FastAPIfrom starlette.middleware.base import BaseHTTPMiddlewareapp = FastAPI()classCustomMiddleware(BaseHTTPMiddleware):asyncdefdispatch(self, request, call_next):        print("Before request")        response = await call_next(request)        print("After request")return responseapp.add_middleware(CustomMiddleware)

FastAPI 的实际应用场景

FastAPI 适用于构建现代化的 Web 应用和 API 服务,以下是一些典型场景:

1. 构建 RESTful API

FastAPI 可以轻松实现增删改查接口,特别适合微服务架构。

2. 数据验证和清洗

通过 Pydantic,FastAPI 可以高效处理数据验证,减少后续逻辑代码。

3. 实时应用

FastAPI 的异步支持使其非常适合实时聊天、推送通知等场景。

4. 与机器学习结合

FastAPI 可用于部署机器学习模型,为前端或其他服务提供预测接口。


使用经验

作为一个长期使用 FastAPI 的开发者,我对它的以下几点感受特别深刻:

  1. 高效开发
    FastAPI 的自动文档生成功能让我省下了很多时间,不用再手动写 Swagger 配置文件了。
  2. 数据验证简单易用
    以往在 Flask 项目中,我需要单独引入工具库来做参数校验。而在 FastAPI 中,Pydantic 完全解决了这个问题。
  3. 性能表现优异
    在一次构建高并发数据服务时,FastAPI 的异步支持让我轻松应对了上千次请求。

FastAPI 是一个现代化的 Python 框架,它用类型注解、异步编程和自动文档彻底改变了 API 开发的体验。无论是快速开发小型项目,还是构建复杂的微服务架构,FastAPI 都能让你的代码更优雅、更高效。

如果你还没试过 FastAPI,赶紧动手安装,用它写一个小项目吧!相信我,它会让你重新爱上 Python 的 API 开发!

文章转自微信公众号@任无意门

#你可能也喜欢这些API文章!