目录
- 快速入门 1.1 快速安装 1.2 快速创建项目 1.3 快速编写API
- FastAPI核心特性 2.1 类型注解 2.2 自动文档 2.3 自动验证
- 高级特性 3.1 数据验证 3.2 依赖注入 3.3 权限控制
- 部署与扩展 4.1 使用Uvicorn部署 4.2 使用Docker容器化 4.3 扩展与插件
- 实战案例 5.1 用户管理系统 5.2 博客系统 5.3 RESTful API服务
1. 快速入门
1.1 快速安装
首先,确保你的Python环境已经安装。然后,通过pip安装FastAPI和Uvicorn:
pip install fastapi uvicorn
1.2 快速创建项目
创建一个新的目录,并初始化一个Python虚拟环境:
mkdir my_fastapi_project
cd my_fastapi_project
python -m venv venv
source venv/bin/activate # 在Windows上使用venv\Scripts\activate
安装FastAPI和Uvicorn:
pip install fastapi uvicorn
创建一个名为main.py
的文件,并编写以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
1.3 快速编写API
运行以下命令启动Uvicorn服务器:
uvicorn main:app --reload
访问http://127.0.0.1:8000/
,你应该能看到以下响应:
{
"message": "Hello World"
}
2. FastAPI核心特性
2.1 类型注解
FastAPI使用Python的类型注解来定义数据模型和验证输入。这使得代码更加清晰,并且可以自动生成API文档。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
async def create_item(item: Item):
return item
2.2 自动文档
FastAPI会自动生成交互式API文档,你可以通过访问http://127.0.0.1:8000/docs
来查看。
2.3 自动验证
FastAPI使用Pydantic进行数据验证,这意味着你可以定义数据模型,并自动验证输入。
3. 高级特性
3.1 数据验证
你可以使用Pydantic模型来定义数据验证规则。
from pydantic import BaseModel, EmailStr, validator
class User(BaseModel):
username: str
email: EmailStr
age: int
@validator('age')
def check_age(cls, v):
if v < 0:
raise ValueError("Age cannot be negative")
return v
3.2 依赖注入
FastAPI使用依赖注入来管理依赖关系,这使得代码更加模块化和可测试。
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token = create_access_token(data={"sub": user.username})
return {"access_token": access_token, "token_type": "bearer"}
3.3 权限控制
你可以使用FastAPI的依赖注入系统来实现权限控制。
from fastapi import FastAPI, Depends, HTTPException, status
app = FastAPI()
@app.get("/users/me")
async def read_users_me(current_user: User = Depends(get_current_user)):
return current_user
4. 部署与扩展
4.1 使用Uvicorn部署
你可以使用Uvicorn来部署FastAPI应用。
uvicorn main:app --reload
4.2 使用Docker容器化
你可以使用Docker来容器化你的FastAPI应用。
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--reload"]
4.3 扩展与插件
FastAPI支持多种扩展和插件,例如数据库连接、缓存和认证。
5. 实战案例
5.1 用户管理系统
创建一个用户管理系统,包括用户注册、登录、修改密码等功能。
5.2 博客系统
创建一个博客系统,包括文章发布、评论、分类等功能。
5.3 RESTful API服务
创建一个RESTful API服务,提供用户、文章、评论等数据接口。
通过以上教程,你可以快速掌握FastAPI,并高效构建Web应用。祝你学习愉快!