# fast-api **Repository Path**: Tianci_sun/fast-api ## Basic Information - **Project Name**: fast-api - **Description**: FastAPI 是一个现代、高性能的 Python Web 框架,用于构建 API。它基于 Starlette(异步 Web 框架)和 Pydantic(数据验证库),结合了异步编程和类型提示,兼顾开发效率与运行性能。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-13 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🟢 FastAPI 项目文档 FastAPI 是一个现代、高性能的 Python Web 框架,用于构建 API。它基于 **Starlette**(异步 Web 框架)和 **Pydantic**(数据验证库),结合了异步编程和类型提示,兼顾开发效率与运行性能。 ## 📌 项目简介 本项目提供了 FastAPI 框架的完整入门教程,通过多个示例文件展示了 FastAPI 的核心功能,包括基础 API、路径参数、查询参数、请求体、参数验证、表单数据、异步处理、文件上传、请求对象处理、响应格式等。 --- ## 🧩 功能模块 | 模块 | 文件 | 说明 | |------|------|------| | 基础 API | `main_01.py` | 创建首个 FastAPI 应用,返回 "Hello World" | | 路径参数 | `main_path.py` | 路径参数传递,支持多种类型和正则匹配 | | 查询参数 | `main_query.py` | 查询参数、默认值、可选参数、多值参数 | | 请求体 | `main_body.py` | 使用 Pydantic 模型定义数据结构 | | 类型验证(原生) | `main_type_zj.py` | 使用原生类型注解进行参数验证 | | 类型验证(Query) | `main_type_query.py` | Query 参数验证:长度、范围、正则、别名等 | | 类型验证(Path) | `main_type_path.py` | Path 参数验证:数值范围、正则、枚举等 | | 字段验证 | `mian_type_field.py` | Field 验证器、自定义验证、枚举值 | | 表单数据 | `mian_type_form.py` | 表单上传、multipart/form-data 编码 | | 异步处理 | `main_async.py` | 异步函数与同步函数、并发 I/O | | 文件上传 | `main_UploadFile_01.py` | 小文件、大文件、多文件上传 | | 请求对象 | `main_client.py` | 获取请求信息:URL、IP、Header、Cookies | | JSON 响应 | `main_res_json.py` | JSON 响应、自定义响应模型 | | 列表响应 | `main_res_list.py` | 分页、过滤、排序 | | ORM 集成 | `main_model*.py`, `main_tortoise_orm*.py` | 数据库模型与 CRUD 操作 | --- ## 📦 环境配置 ### 1. 创建虚拟环境 ```bash conda create -n fastapi_env python=3.12 conda activate fastapi_env ``` ### 2. 安装依赖 ```bash pip install "fastapi[standard]" pip install uvicorn pip install python-multipart ``` ### 3. 安装可选依赖(ORM 示例需要) ```bash pip install tortoise-orm pip install pymysql ``` --- ## 🚀 启动项目 ### 方式一:Python 脚本 ```python if __name__ == '__main__': import uvicorn uvicorn.run('main_01:app', host='127.0.0.1', port=8000, reload=True) ``` ### 方式二:命令行 ```bash uvicorn main_01:app --reload ``` ### 方式三:调试模式 ```bash fastapi dev main_01.py ``` --- ## 📚 API 文档 启动服务后,访问自动生成的交互式文档: | 文档类型 | 地址 | |----------|------| | Swagger UI | http://127.0.0.1:8000/docs | | ReDoc | http://127.0.0.1:8000/redoc | --- ## 📁 项目结构 ``` . ├── main_01.py # 基础 API ├── main_path.py # 路径参数 ├── main_query.py # 查询参数 ├── main_body.py # 请求体 ├── main_type_zj.py # 类型验证(原生) ├── main_type_query.py # 类型验证(Query) ├── main_type_path.py # 类型验证(Path) ├── mian_type_field.py # 字段验证 ├── mian_type_form.py # 表单数据 ├── main_async.py # 异步处理 ├── main_UploadFile_01.py # 文件上传 ├── main_client.py # 请求对象 ├── main_res_json.py # JSON 响应 ├── main_res_list.py # 列表响应 ├── main_model*.py # 独立模型示例 ├── main_tortoise_orm*.py # Tortoise ORM 示例 ├── deepseek.py # 综合示例 └── data/ # 测试数据目录 ``` --- ## 💡 核心示例 ### 基础示例 ```python from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} if __name__ == '__main__': uvicorn.run('main_01:app', host='127.0.0.1', port=8000, reload=True) ``` ### 路径参数 ```python @app.get("/items/{item_id}") def read_item(item_id: int): return {"item_id": item_id} ``` ### 查询参数 ```python @app.get("/search") def search(q: str, page: int = 1, size: int = 10): return {"q": q, "page": page, "size": size} ``` ### 请求体 ```python from pydantic import BaseModel class Item(BaseModel): name: str price: float description: str | None = None @app.post("/items/") def create_item(item: Item): return item ``` ### 文件上传 ```python from fastapi import UploadFile, File @app.post("/upload/") async def upload_file(file: UploadFile = File(...)): return {"filename": file.filename} ``` ### 异步并发 ```python import asyncio @app.get("/async") async def async_endpoint(): tasks = [asyncio.sleep(1) for _ in range(5)] await asyncio.gather(*tasks) return {"message": "完成"} ``` --- ## 📝 许可证 本项目仅供学习交流使用。