
jadenjiu/fastapi-blog-demo
Public

Public
wasmer run jadenjiu/fastapi-blog-demo
wasmer run jadenjiu/fastapi-blog-demo
FastAPI博客系统Demo
这是一个使用FastAPI构建的简单博客系统Demo,所有数据存储在内存中,无需数据库交互。本项目支持使用Wasmer进行部署。
功能特点
- 文章的创建、读取、更新和删除
- 评论的添加和删除
- 响应式Web界面
- RESTful API接口
- 内存数据存储
- Wasmer部署支持
系统架构
系统采用分层架构,主要包括:
- 表示层:API接口和Web界面
- 业务逻辑层:路由处理和服务
- 数据访问层:内存数据库
详细的架构设计请参考architecture.md
文件。
安装和运行
方法1:使用Python虚拟环境
- 确保您已安装Python 3.10+
- 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# 或
.venv\Scripts\activate # Windows
- 安装依赖:
pip install fastapi uvicorn jinja2 python-multipart
- 运行应用:
python run.py
- 访问应用:
- Web界面:http://localhost:8000
- API文档:http://localhost:8000/docs
方法2:使用Wasmer部署
- 安装Wasmer:
curl https://get.wasmer.io -sSfL | sh
- 运行应用:
wasmer run . --net
- 访问应用:
- Web界面:http://localhost:8000
- API文档:http://localhost:8000/docs
API接口
系统提供以下API接口:
文章相关
GET /api/posts/
:获取所有文章列表POST /api/posts/
:创建新文章GET /api/posts/{post_id}
:获取指定文章详情PUT /api/posts/{post_id}
:更新指定文章DELETE /api/posts/{post_id}
:删除指定文章
评论相关
POST /api/comments/
:创建新评论GET /api/comments/post/{post_id}
:获取指定文章的所有评论DELETE /api/comments/{comment_id}
:删除指定评论
Web界面
系统提供以下Web界面:
/
:首页,显示所有文章列表/posts/{post_id}
:文章详情页,显示指定文章及其评论/posts/new
:创建新文章页面/posts/{post_id}/edit
:编辑文章页面
示例数据
系统预置了两篇示例文章和几条评论,您可以立即体验所有功能。
项目结构
fastapi-blog-demo/
├── app/ # 应用主目录
│ ├── api/ # API路由
│ │ ├── comments.py # 评论相关API
│ │ └── posts.py # 文章相关API
│ ├── db/ # 数据库
│ │ └── memory_db.py # 内存数据库实现
│ ├── models/ # 数据模型
│ │ ├── comment.py # 评论模型
│ │ └── post.py # 文章模型
│ ├── schemas/ # 数据模式
│ │ └── blog.py # 博客相关模式
│ ├── static/ # 静态文件
│ │ ├── css/ # CSS样式
│ │ └── js/ # JavaScript脚本
│ ├── templates/ # HTML模板
│ │ ├── base.html # 基础模板
│ │ ├── error.html # 错误页面
│ │ ├── index.html # 首页
│ │ ├── post_detail.html # 文章详情页
│ │ └── post_form.html # 文章表单页
│ └── main.py # 应用入口
├── run.py # 启动脚本
└── wasmer.toml # Wasmer配置文件
注意事项
- 本Demo使用内存存储数据,应用重启后数据将丢失
- 为了简化Demo,未实现用户认证和授权功能
- 在生产环境中,建议使用数据库存储数据并添加适当的安全措施
许可证
MIT