Skip to content

gufeng66/fastapi_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

FastAPI 留言板

一个基于 FastAPI + SQLite + 原生 HTML/CSS/JavaScript 的轻量级前后端交互示例项目。

项目提供一个简单留言板:用户可以在网页上填写昵称和留言内容,前端通过 fetch 调用 FastAPI 接口,后端将留言保存到 SQLite 数据库,并支持查看和删除留言。

功能特性

  • 使用 FastAPI 提供后端 API
  • 使用 SQLite 保存留言数据
  • 使用原生 HTML/CSS/JavaScript 实现前端页面
  • 支持新增留言、查看留言列表、删除留言
  • 提供基础 API 测试
  • 无需 React、Vue 或其他前端构建工具

项目结构

.
├── app/
│   ├── __init__.py
│   ├── database.py
│   ├── main.py
│   ├── schemas.py
│   └── routes/
│       ├── __init__.py
│       └── messages.py
├── static/
│   ├── app.js
│   ├── index.html
│   └── styles.css
├── tests/
│   └── test_messages.py
├── .gitignore
├── README.md
└── requirements.txt

主要文件说明:

  • app/main.py:FastAPI 应用入口,注册路由并挂载静态文件
  • app/database.py:SQLite 数据库连接和初始化逻辑
  • app/schemas.py:请求和响应数据模型
  • app/routes/messages.py:留言相关 API
  • static/index.html:前端页面结构
  • static/styles.css:页面样式
  • static/app.js:前端请求后端 API 的交互逻辑
  • tests/test_messages.py:后端接口测试

环境要求

  • Python 3.10 或更高版本
  • Windows PowerShell、CMD、Git Bash 或其他终端

安装依赖

进入项目目录:

cd "C:\Users\10654\Documents\New project 2"

创建虚拟环境:

python -m venv .venv

安装依赖:

.venv\Scripts\python -m pip install -r requirements.txt

如果安装依赖时网络失败,可以换网络、开启代理,或使用国内镜像源:

.venv\Scripts\python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

启动项目

在项目根目录运行:

.venv\Scripts\python -m uvicorn app.main:app --reload

启动成功后,在浏览器打开:

http://127.0.0.1:8000

FastAPI 自动生成的接口文档:

http://127.0.0.1:8000/docs

API 接口

健康检查

GET /health

响应示例:

{
  "status": "ok"
}

获取留言列表

GET /api/messages

响应示例:

[
  {
    "id": 1,
    "author": "Ada",
    "content": "Hello from FastAPI",
    "created_at": "2026-05-14 10:30:00"
  }
]

新增留言

POST /api/messages
Content-Type: application/json

请求示例:

{
  "author": "Ada",
  "content": "Hello from FastAPI"
}

响应示例:

{
  "id": 1,
  "author": "Ada",
  "content": "Hello from FastAPI",
  "created_at": "2026-05-14 10:30:00"
}

删除留言

DELETE /api/messages/{message_id}

删除成功时返回 204 No Content

如果留言不存在,返回:

{
  "detail": "Message not found"
}

数据库说明

项目默认使用 SQLite,启动应用时会自动创建数据库文件:

messages.db

该文件用于保存留言数据,已经在 .gitignore 中忽略,不会提交到 Git 仓库。

如果测试需要使用临时数据库,可以通过环境变量指定数据库路径:

$env:MESSAGE_BOARD_DB_PATH="test_messages.db"

运行测试

安装依赖后运行:

.venv\Scripts\python -m pytest

当前测试覆盖:

  • 健康检查接口
  • 初始留言列表
  • 新增留言
  • 请求参数校验
  • 删除已有留言
  • 删除不存在留言时返回 404

常见问题

1. 提示 No module named fastapi

说明依赖还没有安装。请先运行:

.venv\Scripts\python -m pip install -r requirements.txt

2. 端口 8000 被占用

可以换一个端口启动:

.venv\Scripts\python -m uvicorn app.main:app --reload --port 8001

然后访问:

http://127.0.0.1:8001

3. 想清空所有留言

停止服务后删除 messages.db 文件,再重新启动项目即可。应用会自动重新创建数据库表。

后续可扩展方向

  • 增加编辑留言功能
  • 增加分页查询
  • 增加用户登录
  • 增加留言搜索
  • 将 SQLite 替换为 MySQL 或 PostgreSQL

About

fastapi小案例

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages