logo

FastAPI Cheat Sheet


title: FastAPI date: 2025-06-07 18:40:00 background: bg-[#3730a3] tags: - web - python - backend categories: - Programming intro: | A concise cheatsheet for FastAPI, a fast and modern web framework for building APIs with Python 3.7+. plugins: - copyCode

Getting Started {.cols-3}

Install & Run

pip install fastapi uvicorn
uvicorn main:app --reload

Hello World

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello FastAPI"}

CLI Run Hint

uvicorn main:app --reload

Routing & Parameters {.cols-3}

Path Parameter

@app.get("/items/{id}")
def read(id: int):
    return {"id": id}

Query Parameter

@app.get("/search")
def find(q: str = "default"):
    return {"q": q}

Optional Query

@app.get("/filter")
def filter_data(limit: int = 10, active: bool = True):
    return {"limit": limit, "active": active}

Request Body & Validation {.cols-3}

Using Pydantic

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float

JSON Body

@app.post("/items/")
def create(item: Item):
    return item

Response Model

@app.post("/items/", response_model=Item)
def create(item: Item):
    return item

Forms, Files, Headers {.cols-3}

Form Input

from fastapi import Form

@app.post("/login")
def login(user: str = Form(...)):
    return {"user": user}

File Upload

from fastapi import UploadFile, File

@app.post("/upload")
def upload(f: UploadFile = File(...)):
    return {"filename": f.filename}

Headers / Cookies

from fastapi import Header, Cookie

@app.get("/info")
def info(ua: str = Header(None)):
    return {"UA": ua}

Middleware & Dependency {.cols-2}

Middleware

@app.middleware("http")
async def log_req(req, call_next):
    res = await call_next(req)
    return res

Dependency

from fastapi import Depends

def auth(token: str = ""):
    if token != "xyz": raise HTTPException(401)
    return True

@app.get("/secure")
def secure(_: bool = Depends(auth)):
    return {"secure": True}

Errors & JSON API {.cols-2}

HTTP Error

from fastapi import HTTPException

@app.get("/err")
def error():
    raise HTTPException(404, "Not Found")

JSON API

from fastapi import FastAPI

@app.get("/json")
def get_data():
    return {"status": "ok"}

Templates & Static {.cols-2}

Mount Static

from fastapi.staticfiles import StaticFiles
app.mount("/static", StaticFiles(directory="static"), name="static")

Jinja2 Support

from fastapi.templating import Jinja2Templates
templates = Jinja2Templates("templates")

Routers & Structure {.cols-2}

Routers (Blueprints)

from fastapi import APIRouter
router = APIRouter()

@router.get("/")
def admin():
    return {"admin": True}

app.include_router(router, prefix="/admin")

Folder Layout

project/
├── main.py
├── static/
├── templates/
├── routers/
│   └── admin.py
└── models/

Docs & Status {.cols-2}

Built-in Docs

  • Swagger: /docs
  • ReDoc: /redoc

Custom Status Code

from fastapi import status

@app.post("/create", status_code=status.HTTP_201_CREATED)
def create():
    return {"msg": "Created"}
⚙️ 后端框架

FastAPI

FastAPI Cheat Sheet - 快速参考指南,收录常用语法、命令与实践。

📂 分类 · 后端框架🧭 Markdown 速查🏷️ 2 个标签
#fastapi#python
向下滚动查看内容
返回全部 Cheat Sheets

Getting Started

Install & Run
BASH
滚动查看更多
pip install fastapi uvicorn
uvicorn main:app --reload
Hello World
PYTHON
滚动查看更多
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello FastAPI"}
CLI Run Hint
BASH
滚动查看更多
uvicorn main:app --reload

Routing & Parameters

Path Parameter
PYTHON
滚动查看更多
@app.get("/items/{id}")
def read(id: int):
    return {"id": id}
Query Parameter
PYTHON
滚动查看更多
@app.get("/search")
def find(q: str = "default"):
    return {"q": q}
Optional Query
PYTHON
滚动查看更多
@app.get("/filter")
def filter_data(limit: int = 10, active: bool = True):
    return {"limit": limit, "active": active}

Request Body & Validation

Using Pydantic
PYTHON
滚动查看更多
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
JSON Body
PYTHON
滚动查看更多
@app.post("/items/")
def create(item: Item):
    return item
Response Model
PYTHON
滚动查看更多
@app.post("/items/", response_model=Item)
def create(item: Item):
    return item

Forms, Files, Headers

Form Input
PYTHON
滚动查看更多
from fastapi import Form

@app.post("/login")
def login(user: str = Form(...)):
    return {"user": user}
File Upload
PYTHON
滚动查看更多
from fastapi import UploadFile, File

@app.post("/upload")
def upload(f: UploadFile = File(...)):
    return {"filename": f.filename}
Headers / Cookies
PYTHON
滚动查看更多
from fastapi import Header, Cookie

@app.get("/info")
def info(ua: str = Header(None)):
    return {"UA": ua}

Middleware & Dependency

Middleware
PYTHON
滚动查看更多
@app.middleware("http")
async def log_req(req, call_next):
    res = await call_next(req)
    return res
Dependency
PYTHON
滚动查看更多
from fastapi import Depends

def auth(token: str = ""):
    if token != "xyz": raise HTTPException(401)
    return True

@app.get("/secure")
def secure(_: bool = Depends(auth)):
    return {"secure": True}

Errors & JSON API

HTTP Error
PYTHON
滚动查看更多
from fastapi import HTTPException

@app.get("/err")
def error():
    raise HTTPException(404, "Not Found")
JSON API
PYTHON
滚动查看更多
from fastapi import FastAPI

@app.get("/json")
def get_data():
    return {"status": "ok"}

Templates & Static

Mount Static
PYTHON
滚动查看更多
from fastapi.staticfiles import StaticFiles
app.mount("/static", StaticFiles(directory="static"), name="static")
Jinja2 Support
PYTHON
滚动查看更多
from fastapi.templating import Jinja2Templates
templates = Jinja2Templates("templates")

Routers & Structure

Routers (Blueprints)
PYTHON
滚动查看更多
from fastapi import APIRouter
router = APIRouter()

@router.get("/")
def admin():
    return {"admin": True}

app.include_router(router, prefix="/admin")
Folder Layout
BASH
滚动查看更多
project/
├── main.py
├── static/
├── templates/
├── routers/
│   └── admin.py
└── models/

Docs & Status

Built-in Docs
  • Swagger: /docs
  • ReDoc: /redoc
Custom Status Code
PYTHON
滚动查看更多
from fastapi import status

@app.post("/create", status_code=status.HTTP_201_CREATED)
def create():
    return {"msg": "Created"}

相关 Cheat Sheets