FastAPI 入门教程
FastAPI 是什么
FastAPI 是一个现代、高性能的 Python Web 框架,用于构建 API。基于 Python 3.6+ 的类型提示,自带数据校验、交互式文档(Swagger/OpenAPI)和异步支持。
安装
bash
pip install fastapi uvicorn
fastapi:框架本身uvicorn:ASGI 服务器,用来运行 FastAPI 应用
Hello World
创建 main.py:
python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
运行
bash
uvicorn main:app --reload
命令格式:<文件名>:<变量名>
main→ 文件名main.py(不含.py后缀)app→ 文件中的 FastAPI 实例变量名(app = FastAPI())--reload→ 代码改动后自动重启
访问 http://127.0.0.1:8000/ ,返回 {"Hello":"World"}
路径参数和查询参数
python
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
item_id: int→ 路径参数,自动类型转换q: str = None→ 查询参数,可选
访问 http://127.0.0.1:8000/items/42?q=test
自带 API 文档
启动服务后访问:
- http://127.0.0.1:8000/docs → Swagger UI 交互式文档
- http://127.0.0.1:8000/redoc → ReDoc 文档
项目结构
没有强制要求,最简单就是一个文件:
project/
main.py
实际项目常见结构:
project/
app/
__init__.py
main.py # app = FastAPI() 定义
routers/ # 路由
models/ # 数据模型
services/ # 业务逻辑
这只是组织代码的习惯,不是框架要求。
常见问题
报错 Could not import module "app"
文件名和变量名写反了。假设文件是 main.py,变量是 app:
bash
# 错误
uvicorn app:main --reload
# 正确
uvicorn main:app --reload