FastAPI 是一个现代、高性能的 Python Web 框架,专为构建 APIs 设计。它基于 Python 类型提示,支持异步编程,并提供自动生成的交互式文档(Swagger UI 和 ReDoc)。以下是 FastAPI 开发的核心指南:


1. 安装

pip install fastapi
pip install "uvicorn[standard]"  # ASGI 服务器

2. 最小示例

创建 main.py

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def read_root():return {"Hello": "World"}@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):return {"item_id": item_id, "query_param": query_param}

运行服务:

uvicorn main:app --reload
  • 访问 http://localhost:8000
  • 文档:http://localhost:8000/docs

3. 核心特性

(1) 路径参数与类型校验
@app.get("/users/{user_id}")
def get_user(user_id: int):  # 自动校验整数类型return {"user_id": user_id}
(2) 查询参数
@app.get("/items/")
def list_items(skip: int = 0, limit: int = 10):  # 默认值return {"skip": skip, "limit": limit}
(3) 请求体(Pydantic 模型)
from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = None@app.post("/items/")
def create_item(item: Item):  # 自动解析 JSONreturn {"item": item.dict()}
(4) 异步支持
@app.get("/async-demo")
async def async_endpoint():await some_async_task()return {"status": "done"}
(5) 自动文档
  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

4. 进阶功能

(1) 依赖注入
from fastapi import Dependsdef query_extractor(q: str | None = None):return q@app.get("/dependency")
def use_dependency(query: str = Depends(query_extractor)):return {"query": query}
(2) 中间件
@app.middleware("http")
async def add_process_time_header(request, call_next):response = await call_next(request)response.headers["X-Custom-Header"] = "Foo"return response
(3) 文件上传
from fastapi import UploadFile, File@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):contents = await file.read()return {"filename": file.filename, "size": len(contents)}
(4) 错误处理
from fastapi import HTTPException@app.get("/error")
def raise_error():raise HTTPException(status_code=404, detail="Item not found")
(5) CORS 配置
from fastapi.middleware.cors import CORSMiddlewareapp.add_middleware(CORSMiddleware,allow_origins=["*"],allow_methods=["*"],
)

5. 项目结构建议

my_project/
├── app/
│   ├── routers/
│   │   ├── items.py
│   │   └── users.py
│   ├── models.py
│   ├── schemas.py
│   └── main.py
├── tests/
├── requirements.txt
└── Dockerfile

6. 部署选项

(1) 使用 Uvicorn 生产环境
uvicorn main:app --host 0.0.0.0 --port 80 --workers 4
(2) Docker 部署
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
(3) 云服务
  • AWS: EC2 + ALB, ECS, Lambda
  • GCP: Cloud Run, Compute Engine
  • Azure: App Service, Container Instances

7. 性能优化技巧

  1. 使用异步数据库驱动(如 asyncpg
  2. 启用响应压缩:
    app = FastAPI(docs_url=None, redoc_url=None, compress_level=5)
    
  3. lru_cache 缓存重复计算
  4. 启用 HTTP/2(需 HTTPS)

8. 学习资源

  • 官方文档:https://fastapi.tiangolo.com
  • GitHub 示例:https://github.com/tiangolo/fastapi
  • 书籍:《Building Python Web APIs with FastAPI》

FastAPI 的自动验证、依赖注入和异步支持使其成为构建高性能 API 的理想选择,特别适合微服务和数据密集型应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87481.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87481.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87481.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析

你好呀,我是小邹。 个人博客系统日渐完善,现在的文章评论以及留言数量逐渐增多,所以今天重构了管理后台的评论列表(全量查询 -> 分页条件搜索)。 示例图 网页端手机端一、系统架构设计与技术选型 系统采用前后端分离…

sqlmap学习笔记ing(1.Easy_SQLi(时间,表单注入))

题解 根据题目提示,应为SQL注入,题目页面只有一个表单,用sqlmap进行表单注入。 使用--forms参数进行自动化表单注入,逐步得到flag。 ### 总结参数作用: -u 指定目标URL。 -C 指定列名(多个…

SciPy 安装使用教程

一、SciPy 简介 SciPy(Scientific Python)是基于 NumPy 的开源科学计算库,提供了数值积分、优化、信号处理、线性代数、统计分析等高级科学计算功能。它是构建 Python 科学计算生态系统的核心组件之一,常用于科研、工程、数据分析…

【AI大模型】通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》

简介: 本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进(新增向量缓存、双通道同步)、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时,深入探讨了安全防护体系、三…

如何进行需求全周期管理

实现高效的需求全周期管理,应从以下五个方面入手:1、建立系统化需求来源渠道、2、设置清晰的评审与优先级策略、3、加强执行过程的协同与跟踪、4、闭环需求验收与上线反馈、5、构建长期的需求知识沉淀机制。 其中,“加强执行过程的协同与跟踪…

热传导方程能量分析与边界条件研究

题目 问题 10. (a) 考虑热传导方程在 J = ( − ∞ , ∞ ) J = (-\infty, \infty) J=(−∞,∞) 上,证明“能量” E ( t ) = ∫ J u 2 ( x , t ) d x E(t) = \int_{J} u^{2}(x,t) dx E(t)=∫J​u2(x,t)dx (8) 不增加;进一步证明,除非 u ( x , t ) = 常数 u(x,t) = \text{常…

【AI News | 20250702】每日AI进展

AI Repos 1、LLM-RL-Visualized 提供100余张原创架构图,全面涵盖了 LLM (大语言模型)、VLM (视觉语言模型) 等大模型技术。内容深度解析了训练算法(如 RL、RLHF、GRPO、DPO、SFT、CoT 蒸馏等)、效果优化策略(如 RAG、CoT&#xf…

安徽省企业如何做信创产品认证?信创认证流程与费用详解

安徽省作为长三角一体化发展的重要成员,正大力推进信息技术应用创新(信创)产业发展。依托合肥“中国声谷”、芜湖机器人及智能装备基地等产业集群,以及省内对信创产业的政策扶持,企业通过信创认证后,能更好…

百度文心 ERNIE 4.5 开源:开启中国多模态大模型开源新时代

百度文心 ERNIE 4.5 开源:开启中国多模态大模型开源新时代 随着DeepSeek-R1的横空出示,越来越多大公司开始开源模型,像DeepSeek R1发布的时候Kimi同步开源了技术文档,随着R1推动着思维链推理技术的发展,开源社区也出现…

22、企业项目管理(Project)全体系构建:从基础框架到智能防呆的完整解决方案

项目管理能力——企业VUCA战略落地的核心枢纽 在VUCA(乌卡时代,即VUCA时代,是指人们生活在一个不稳定性、不确定性、复杂性、模糊性的时代、境况或者世界中。vuca是volatility(易变性VUCA),uncertainty&am…

分布式定时任务:Elastic-Job-Lite

Elastic-Job-Lite 是一款由 Apache 开源的轻量级分布式任务调度框架,属于 ShardingSphere 生态体系的一部分。它专注于分布式任务调度,支持弹性伸缩、分片处理、高可用等特性,且不依赖中心化架构。 一、基础 (一)核心特…

记录一次生产环境ActiveMQ无法启动的问题

这次遇到一个问题,是ActiveMQ无法启动的,跟以往的现象不一样。这次是在服务器重启后出异常。 1、启动ActiveMQ时提示:activemq/data/kahadb/db.data(输入输出错误),NotFoundFileException异常 2、想着不应该…

大型语言模型幻觉检测相关综述

背景 1.1 幻觉检测的定义与范围 大型语言模型(LLMs)中的幻觉检测 是指系统性地识别由LLMs生成的事实错误或无意义输出的任务,而无需依赖外部证据 [Li et al., 2024; Zhang et al., 2024]。这项任务对于确保LLM生成内容的可靠性和可信度至关…

Python爬虫与数据可视化教程

对于经常写爬虫的技术来说了,可视化大大的提高工作效率,可以让获取的数据更直观的展示在面前,下面我将通过具体实操给大家展示下多种可视化具体教程,希望能都帮助大家。 下面是一个完整的Python爬虫和数据可视化解决方案&#xff…

【GHS】Green Hills软件MULTI-IDE的安装教程

前言:MULTI-IDE作为一款Green Hills开发的支持C/C、Ada等语言的嵌入式开发环境,由于其优异的性能,所以在汽车电子软件的开发中占有重要地位。但是这款IDE需要付费使用,对于个人学习而言不太友好,所以这里介绍一款PJ版本…

Web攻防-文件上传黑白名单MIMEJS前端执行权限编码解析OSS存储分域名应用场景

知识点: 1、WEB攻防-文件上传-前端&黑白名单&MIME&文件头等 2、WEB攻防-文件上传-执行权限&解码还原&云存储&分站等 3、WEB攻防-文件上传-JS提取&特定漏洞&第三方编辑器 4、WEB攻防-文件上传-思维导图形成 常规文件上传&#xff1a…

Odoo系统大型业务优化实战

目录 背景说明ORM与模型优化数据量处理策略接口与报表优化系统架构优化监控与诊断工具项目实战总结(案例)后续优化建议性能优化检查清单总结 一、背景说明 在 Odoo 项目中,随着业务不断扩展,系统常常面临如下挑战: …

【2.4 漫画SpringBoot实战】

🚀 漫画SpringBoot实战 🎯 学习目标:掌握SpringBoot企业级开发,从零到一构建现代化Java应用 📋 目录 SpringBoot核心特性自动配置原理Web开发实战数据访问与事务监控与部署🎭 漫画引言 小明: “为什么SpringBoot这么受欢迎?” 架构师老王: “SpringBoot就像全自动…

美国站群服务器的优势和应用与选择指南

在当今数字化时代,互联网业务的蓬勃发展促使各类企业和个人不断寻求高效、稳定且功能强大的网络解决方案。美国站群服务器作为一种备受瞩目的网络基础设施,正逐渐成为众多从事跨境电商、搜索引擎优化(SEO)、内容分发、数据采集等业…

智能合约基础:Solidity语法速成

目录 智能合约基础:Solidity语法速成引言:区块链的可编程世界1. Solidity基础语法1.1 合约结构1.2 数据类型2. 核心概念详解2.1 可见性修饰符2.2 状态可变性2.3 错误处理2.4 事件与日志3. 高级特性3.1 继承与接口3.2 修饰器3.3 委托调用与代理合约4. 完整DeFi质押合约实现5. …