news 2026/9/14 18:54:20

HoRain云--FastAPI 从入门到生产:路由、依赖注入、异步与部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--FastAPI 从入门到生产:路由、依赖注入、异步与部署

1. 为什么选择 FastAPI

FastAPI 基于 Starlette 和 Pydantic,支持异步、自动生成 OpenAPI 文档、类型提示驱动开发。性能接近 Node.js 和 Go,开发效率极高。

安装:

bash

复制

下载

pip install fastapi uvicorn[standard]

2. 第一个接口

python

复制

下载

from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello FastAPI"}

启动:

bash

复制

下载

uvicorn main:app --reload

访问http://127.0.0.1:8000/docs即可看到 Swagger 文档。

3. 路径参数与查询参数

python

复制

下载

@app.get("/users/{user_id}") def get_user(user_id: int, q: str | None = None): return {"user_id": user_id, "q": q}

类型提示会自动校验,传错类型返回 422。

4. Pydantic 模型

python

复制

下载

from pydantic import BaseModel, EmailStr class UserCreate(BaseModel): name: str email: EmailStr age: int @app.post("/users") def create_user(user: UserCreate): return user

Pydantic v2 性能大幅提升,支持严格模式和自定义校验。

5. 依赖注入

python

复制

下载

from fastapi import Depends def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/items") def read_items(db=Depends(get_db)): return db.query(Item).all()

依赖注入可以复用数据库连接、认证逻辑、配置等。

6. 异步接口

python

复制

下载

@app.get("/async") async def async_endpoint(): await asyncio.sleep(1) return {"status": "ok"}

I/O 密集场景使用async def,CPU 密集仍用普通def,FastAPI 会自动放入线程池。

7. 数据库集成

推荐 SQLAlchemy 2.0 + Alembic:

python

复制

下载

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str]

8. 认证与权限

使用 OAuth2 + JWT:

python

复制

下载

from fastapi.security import OAuth2PasswordBearer oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") @app.get("/me") def read_me(token: str = Depends(oauth2_scheme)): return decode_token(token)

9. 部署

Dockerfile:

dockerfile

复制

下载

FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

生产建议使用 Gunicorn + Uvicorn Worker:

bash

复制

下载

gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

10. 常见坑

  • 在 async 函数中使用阻塞库会拖慢整个事件循环。

  • Pydantic v1 和 v2 语法不兼容。

  • 数据库会话未正确关闭会导致连接泄漏。

  • 生产环境不要开启--reload

11. 总结

FastAPI 适合快速构建高性能 API。掌握 Pydantic、依赖注入和异步后,可以轻松应对中大型项目。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 18:53:31

JWT在分布式系统中的认证实践与优化

1. 分布式系统中的登录挑战在分布式架构成为主流的今天,登录认证面临着前所未有的复杂性。想象一下:你的用户在北京访问了部署在上海的服务器A完成登录,下一秒却需要从广州的服务器B获取数据。传统的session-cookie机制在这种场景下会暴露出明…

作者头像 李华
网站建设 2026/9/14 18:52:43

深度优先算法入门级例题

46. 全排列 文章目录[46. 全排列](https://leetcode.cn/problems/permutations/)- 递归枚举- 回溯法结语给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出&…

作者头像 李华
网站建设 2026/9/14 18:51:19

PHP开源发布站系统:高效内容管理与二次开发指南

1. 项目概述:PHP开源发布站系统的核心价值这套PHP开源发布站系统源码是当前内容分发领域的一把瑞士军刀。作为一名经历过多个发布站项目的老兵,我深刻理解这类系统的核心价值——它不仅是一个简单的文章发布工具,更是构建内容生态的基础设施。…

作者头像 李华
网站建设 2026/9/14 18:45:21

QClaw与OpenClaw框架对比:智能体系统开发指南

1. QClaw与OpenClaw概述QClaw和OpenClaw都是当前热门的自动化工具框架,主要用于构建和部署智能体系统。这两个框架在开发者社区中引起了广泛讨论,特别是在股票分析、流程自动化等场景下表现出色。QClaw是一个相对较新的框架,以其轻量级和易用…

作者头像 李华