fastapi教程

来源:undefined 2025-05-30 10:18:13 1001

FastAPI 是一个用于构建 Web API 的现代化、高性能框架。它建立在 Starlette 和 Pydantic 之上,利用 Python 的异步特性来实现高效的处理。FastAPI 以其快速开发、自动生成文档和出色的性能而受到广泛关注,特别是在数据密集型应用程序中,如机器学习和数据科学项目。

FastAPI 的特点

高性能:FastAPI 基于 ASGI(Asynchronous Server Gateway Interface),采用 Python 的异步特性,性能与 Node.js、Go 等相媲美。 自动生成文档:利用 OpenAPI 和 JSON Schema,FastAPI 可以自动生成交互式 API 文档。 类型检查:基于 Python 3.6+ 的类型标注,FastAPI 通过 Pydantic 提供自动的请求验证和数据解析。 高效的错误处理:快速捕获和处理请求中的错误。 支持异步:默认支持 Python 的 async 和 await 功能,便于处理异步请求。

快速入门

下面我们来构建一个简单的 FastAPI 应用来了解其基本用法。

# 首先确保安装了 fastapi 和 uvicorn # pip install fastapi uvicorn from fastapi import FastAPI # 创建 FastAPI 实例 app = FastAPI() # 定义一个路径操作装饰器,处理 GET 请求 @app.get("/") async def read_root(): return {"Hello": "World"} # 定义带有路径参数的 API @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} # 运行应用 # 使用命令: uvicorn main:app --reload

在上述代码中,我们创建了一个简单的 FastAPI 应用,它包含两个路径操作:根路径 / 和带参数的 /items/{item_id} 路径。该应用可以通过 Uvicorn 运行,并且随着代码的更新自动重载。

路径参数和查询参数

FastAPI 对路径参数和查询参数提供了灵活的支持。如上例,item_id 是路径参数,而 q 是查询参数。如果不传 q,它的默认值为 None。

请求体和数据验证

FastAPI 使用 Pydantic 模型来定义请求体。Pydantic 提供了强大的数据验证和解析功能,使请求的数据验证简单明了。

from pydantic import BaseModel # 定义 Pydantic 模型 class Item(BaseModel): name: str price: float is_offer: bool = None # 处理 POST 请求 @app.post("/items/") async def create_item(item: Item): return item

在这个例子中,我们定义了一个 Item 模型,其中包含 name、price 和 is_offer 三个字段。FastAPI 会自动验证请求的 JSON 数据,确保其符合 Item 模型的定义。

网络服务的运行

使用 uvicorn 可以高效地运行 FastAPI 应用。Uvicorn 是一个支持 ASGI 的轻量级 Web 服务器。

运行命令:

uvicorn main:app --reload

其中 main 是 Python 文件的名称,app 是 FastAPI 实例的变量名。--reload 参数使服务器在检测到代码变化时自动重新启动,非常适合开发环境。

交互式文档

FastAPI 内置了自动生成 API 文档的功能,可以在 /docs 路径访问基于 Swagger UI 的交互式界面。同时在 /redoc 路径访问 ReDoc 提供的文档。

异步编程模型

FastAPI 强烈支持异步编程,通过使用 async 和 await,开发者可以利用 Python 异步 I/O 操作,比如数据库查询或调用外部服务。

@app.get("/async-items/") async def get_items(): # 假设这是一个异步数据库操作 items = await some_async_db_query() return items

这一特性对于 I/O 密集型的应用来说非常理想,使得应用能够处理更高的并发请求数。

中间件(Middleware)

FastAPI 允许添加中间件来拦截请求和响应,从而执行如日志记录、鉴权等操作。

from fastapi.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )

使用依赖注入

FastAPI 提供了强大的依赖注入功能,通过函数参数类型和注解实现。在处理复杂业务逻辑时(如权限控制、数据库会话管理),可以极大简化代码。

from fastapi import Depends def get_db(): # 假设这是一个数据库会话生成器 db = create_db_session() try: yield db finally: db.close() @app.get("/users/") async def read_users(db: Session = Depends(get_db)): users = db.query(User).all() return users

小结

FastAPI 是一个功能强大且富有表现力的 Web 框架,专注于易于使用的开发体验和高性能。它的类型验证、自动文档生成、异步支持及现代化设计使得它非常适合构建高效的 API 服务。随着对异步编程需求的增长,FastAPI 的优势愈加明显,尤其是在构建实时应用和微服务中。

上一篇:wan lan口区别 下一篇:360编辑器

最新文章