项目说明
这是一个用于验证 FastAPI 基础能力的可运行项目,展示路由、参数校验和自动文档。
运行方法
创建虚拟环境并安装依赖,运行 uvicorn main:app --reload,访问 /health 与 /hello/{name},在 /docs 查看 OpenAPI 文档。
验证方式
测试健康端点返回 200,问候端点正确使用路径和查询参数,非法参数返回 422。检查 /openapi.json 包含两个路径。生产部署应使用非 root 用户、固定依赖版本,并配置超时和访问日志;不要在生产开启 reload。
验收清单
完成「FastAPI Hello API — 可运行 Python 项目」后,按节点或操作步骤逐项自查:准备可复现的本地环境,执行文档中的命令,记录输出与失败信息,并确认权限、空数据和失败恢复路径都有对应证据。
代码示例
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install dependencies
pip install -r requirements.txt
# Run the dev server
uvicorn main:app --reload
fastapi-hello/
├── main.py # App entry point with routes
├── routers/
│ └── hello.py # /hello endpoint router
├── requirements.txt # Dependencies
├── test_main.py # Pytest test suite
└── .venv/ # Virtual environment (created on install)
# main.py
from fastapi import FastAPI
from routers.hello import hello_router
app = FastAPI(
title="Hello API",
description="A minimal FastAPI project for educational purposes",
version="1.0.0",
)
app.include_router(hello_router, tags=["hello"])
@app.get("/health")
async def health_check():
return {"status": "ok", "version": "1.0.0"}
# routers/hello.py
from fastapi import APIRouter
hello_router = APIRouter()
@hello_router.get("/hello/{name}")
async def greet_by_path(name: str):
"""Greet a user by name (path parameter)."""
return {"message": f"Hello, {name}!"}
@hello_router.get("/greet")
async def greet_by_query(name: str = "World", greeting: str = "Hello"):
"""Greet a user with configurable greeting (query parameters)."""
return {"message": f"{greeting}, {name}!"}
# requirements.txt
fastapi==0.115.5
uvicorn==0.32.1
pytest==8.3.4
httpx==0.27.0
pytest
Test Files 1 passed (1)
Tests 3 passed (3)
Duration 1.45s