165 lines
4.0 KiB
Markdown
165 lines
4.0 KiB
Markdown
# Web 服务器项目
|
||
|
||
这是一个简单的 HTTP Web 服务器项目,演示了 Go 语言在网络编程、并发处理和 RESTful API 开发方面的应用。
|
||
|
||
## 项目特性
|
||
|
||
- HTTP 服务器基础功能
|
||
- RESTful API 设计
|
||
- JSON 数据处理
|
||
- 路由管理
|
||
- 中间件支持
|
||
- 静态文件服务
|
||
- 并发请求处理
|
||
- 错误处理和日志记录
|
||
- 简单的用户管理系统
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
03-web-server/
|
||
├── README.md # 项目说明文档
|
||
├── main.go # 主程序入口
|
||
├── server/ # 服务器核心包
|
||
│ ├── server.go # HTTP 服务器
|
||
│ ├── router.go # 路由管理
|
||
│ ├── middleware.go # 中间件
|
||
│ └── handlers.go # 请求处理器
|
||
├── models/ # 数据模型
|
||
│ └── user.go # 用户模型
|
||
├── static/ # 静态文件
|
||
│ ├── index.html # 首页
|
||
│ ├── style.css # 样式文件
|
||
│ └── script.js # JavaScript 文件
|
||
├── data/ # 数据文件
|
||
│ └── users.json # 用户数据
|
||
└── server_test.go # 测试文件
|
||
```
|
||
|
||
## 运行方法
|
||
|
||
```bash
|
||
# 进入项目目录
|
||
cd 10-projects/03-web-server
|
||
|
||
# 运行程序
|
||
go run main.go
|
||
|
||
# 或者编译后运行
|
||
go build -o webserver main.go
|
||
./webserver
|
||
```
|
||
|
||
## API 接口
|
||
|
||
### 用户管理 API
|
||
|
||
- `GET /api/users` - 获取所有用户
|
||
- `GET /api/users/{id}` - 获取指定用户
|
||
- `POST /api/users` - 创建新用户
|
||
- `PUT /api/users/{id}` - 更新用户信息
|
||
- `DELETE /api/users/{id}` - 删除用户
|
||
|
||
### 其他接口
|
||
|
||
- `GET /` - 首页
|
||
- `GET /health` - 健康检查
|
||
- `GET /api/stats` - 服务器统计信息
|
||
- `GET /static/*` - 静态文件服务
|
||
|
||
## 使用示例
|
||
|
||
### 启动服务器
|
||
|
||
```bash
|
||
$ go run main.go
|
||
🚀 服务器启动成功
|
||
📍 地址: http://localhost:8080
|
||
📊 健康检查: http://localhost:8080/health
|
||
📚 API文档: http://localhost:8080/api
|
||
```
|
||
|
||
### API 调用示例
|
||
|
||
```bash
|
||
# 获取所有用户
|
||
curl http://localhost:8080/api/users
|
||
|
||
# 创建新用户
|
||
curl -X POST http://localhost:8080/api/users \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"name":"张三","email":"zhangsan@example.com","age":25}'
|
||
|
||
# 获取指定用户
|
||
curl http://localhost:8080/api/users/1
|
||
|
||
# 更新用户信息
|
||
curl -X PUT http://localhost:8080/api/users/1 \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"name":"张三","email":"zhangsan@gmail.com","age":26}'
|
||
|
||
# 删除用户
|
||
curl -X DELETE http://localhost:8080/api/users/1
|
||
|
||
# 健康检查
|
||
curl http://localhost:8080/health
|
||
|
||
# 服务器统计
|
||
curl http://localhost:8080/api/stats
|
||
```
|
||
|
||
### 响应示例
|
||
|
||
```json
|
||
// GET /api/users
|
||
{
|
||
"status": "success",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"name": "张三",
|
||
"email": "zhangsan@example.com",
|
||
"age": 25,
|
||
"created_at": "2024-01-01T10:00:00Z",
|
||
"updated_at": "2024-01-01T10:00:00Z"
|
||
}
|
||
],
|
||
"count": 1
|
||
}
|
||
|
||
// GET /health
|
||
{
|
||
"status": "healthy",
|
||
"timestamp": "2024-01-01T10:00:00Z",
|
||
"uptime": "1h30m45s",
|
||
"version": "1.0.0"
|
||
}
|
||
```
|
||
|
||
## 学习要点
|
||
|
||
这个项目综合运用了以下 Go 语言特性:
|
||
|
||
1. **HTTP 服务器**: 使用 `net/http` 包创建 Web 服务器
|
||
2. **路由管理**: 实现 RESTful 路由和参数解析
|
||
3. **JSON 处理**: 请求和响应的 JSON 序列化/反序列化
|
||
4. **中间件模式**: 日志记录、CORS、认证等中间件
|
||
5. **并发处理**: 利用 goroutine 处理并发请求
|
||
6. **错误处理**: HTTP 错误响应和日志记录
|
||
7. **文件操作**: 静态文件服务和数据持久化
|
||
8. **结构体和接口**: 数据模型和服务接口设计
|
||
9. **包管理**: 多包项目结构和依赖管理
|
||
10. **测试**: HTTP 服务器和 API 的测试
|
||
|
||
## 扩展建议
|
||
|
||
1. 添加用户认证和授权(JWT)
|
||
2. 实现数据库集成(MySQL、PostgreSQL)
|
||
3. 添加缓存支持(Redis)
|
||
4. 实现 WebSocket 支持
|
||
5. 添加 API 限流和熔断
|
||
6. 集成 Swagger API 文档
|
||
7. 添加配置文件支持
|
||
8. 实现优雅关闭
|
||
9. 添加监控和指标收集
|
||
10. 支持 HTTPS 和 HTTP/2 |