task_auto_plan/app/main.py

92 lines
2.6 KiB
Python
Raw Normal View History

2026-04-24 09:13:51 +00:00
"""
FastAPI 主应用入口
提供待办事项Todo管理的 RESTful API
使用内存假数据存储无需外部数据库
"""
from fastapi import FastAPI, HTTPException, status
from app.services import (
TodoService,
TodoCreate,
TodoUpdate,
TodoResponse,
)
app = FastAPI(
title="Todo 管理服务",
description="一个基于 FastAPI 的简单待办事项管理服务示例",
version="1.0.0",
)
# 全局服务实例(使用内存假数据)
todo_service = TodoService()
# ──────────────────────────────────────────────
# API 路由
# ──────────────────────────────────────────────
@app.get("/", tags=["健康检查"])
async def root():
"""服务根路径,返回基本信息。"""
return {
"service": "Todo 管理服务",
"version": "1.0.0",
"docs": "/docs",
}
@app.get("/todos", response_model=list[TodoResponse], tags=["待办事项"])
async def list_todos():
"""获取所有待办事项列表。"""
return todo_service.list_todos()
@app.get("/todos/{todo_id}", response_model=TodoResponse, tags=["待办事项"])
async def get_todo(todo_id: int):
"""根据 ID 获取单个待办事项。"""
todo = todo_service.get_todo(todo_id)
if todo is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"待办事项 {todo_id} 不存在",
)
return todo
@app.post(
"/todos",
response_model=TodoResponse,
status_code=status.HTTP_201_CREATED,
tags=["待办事项"],
)
async def create_todo(todo_in: TodoCreate):
"""创建新的待办事项。"""
return todo_service.create_todo(todo_in)
@app.put("/todos/{todo_id}", response_model=TodoResponse, tags=["待办事项"])
async def update_todo(todo_id: int, todo_in: TodoUpdate):
"""更新指定待办事项。"""
todo = todo_service.update_todo(todo_id, todo_in)
if todo is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"待办事项 {todo_id} 不存在",
)
return todo
@app.delete("/todos/{todo_id}", status_code=status.HTTP_204_NO_CONTENT, tags=["待办事项"])
async def delete_todo(todo_id: int):
"""删除指定待办事项。"""
deleted = todo_service.delete_todo(todo_id)
if not deleted:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"待办事项 {todo_id} 不存在",
)
return None