FastAPI 入门速览

FastAPI 是一个基于 Pytho 的高性能 Web API 框架。

特点:

  • 快:基于 ASGI,支持异步
  • 简单:类型注解驱动
  • 自动校验:Pydantic
  • 自动文档:Swagger / OpenAPI
  • 适合:微服务、后台 API、AI 服务、自动化平台

FastAPI = Python 类型注解 + 自动校验 + 自动文档 + 高性能 API 框架。


1. 安装

1
pip install fastapi uvicorn

启动:

1
uvicorn main:app --reload

2. 第一个接口

main.py

1
2
3
4
5
6
7
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def hello():
return {"msg": "hello fastapi"}

访问:

http://127.0.0.1:8000

接口文档:

http://127.0.0.1:8000/docs

3. 路由

1
2
3
@app.get("/users")
def users():
return ["Tom", "Jack"]

常用:

1
2
3
4
@app.get()
@app.post()
@app.put()
@app.delete()

4. 参数

路径参数

1
2
3
@app.get("/users/{id}")
def user(id: int):
return {"id": id}

请求:

/users/100

Query 参数

1
2
3
@app.get("/items")
def items(page:int=1):
return {"page":page}

请求:

/items?page=2

5. 请求Body(重点)

使用 Pydantic:

1
2
3
4
5
6
7
8
9
10
from pydantic import BaseModel

class User(BaseModel):
name:str
age:int


@app.post("/users")
def create(user:User):
return user

请求:

1
2
3
4
{
"name":"Tom",
"age":20
}

自动完成:

  • JSON解析
  • 类型校验
  • 错误返回
  • 文档生成

6. 响应模型

1
2
3
4
5
6
7
8
9
10
11
class UserOut(BaseModel):
id:int
name:str

@app.get("/user", response_model=UserOut)
def get_user():
return {
"id":1,
"name":"Tom",
"password":"123"
}

返回:

1
2
3
4
{
"id":1,
"name":"Tom"
}

多余字段自动过滤。


7. 异步

同步:

1
2
def api():
pass

异步:

1
2
async def api():
pass

适合:

  • 数据库 IO
  • HTTP 请求
  • Redis
  • 文件操作

8. 项目结构

推荐:

app/
├── main.py
├── api/
│   ├── user.py
│   └── order.py
├── models/
├── schemas/
├── services/
└── database/

9. 常用生产组件

功能 组件
Web服务 Uvicorn
数据库 SQLAlchemy
数据校验 Pydantic
配置管理 pydantic-settings
鉴权 JWT/OAuth2
缓存 Redis
部署 Docker/K8s