全面的示例和演示,灵感来自 H3z HTTP 框架。本仓库展示了如何使用 Zig 构建快速、轻量且可组合的 HTTP 服务器,包含各种模式、中间件支持和生产级特性。
注意:本项目包含一个简化的 H3z 兼容 API 实现,用于演示目的。当 H3z 变得稳定后,这些示例可以轻松迁移到官方 H3z 库。
本仓库包含多个全面的示例:
basic_server.zig
)multi_mode_server.zig
)middleware_example.zig
)advanced_routing.zig
)rest_api.zig
)# 克隆项目
git clone https://github.com/your-username/h3z-examples.git
cd h3z-examples
# 构建所有示例
zig build
# 运行测试
zig build test
zig build basic
# 或者
zig build run
# 基本模式(默认)
zig build multi
# 安全模式
zig build multi -- --mode=secure
# 开发模式
zig build multi -- --mode=dev
zig build middleware
zig build advanced
zig build api
方法 | 路径 | 描述 |
---|---|---|
GET | / |
带有 HTML 界面的主页 |
GET | /hello/:name |
个性化问候 |
POST | /api/echo |
回显请求体 |
GET | /api/status |
服务器状态 |
方法 | 路径 | 描述 |
---|---|---|
GET | / |
模式特定的主页 |
GET | /api/status |
带有模式信息的服务器状态 |
POST | /api/echo |
回显请求体 |
GET | /users/:id |
用户信息 |
GET | /health |
健康检查(安全模式) |
POST | /upload |
文件上传(安全模式) |
GET | /admin |
管理面板(安全模式,需要认证) |
方法 | 路径 | 描述 |
---|---|---|
GET | /api/v1/users |
列出所有用户 |
GET | /api/v1/users/:id |
通过 ID 获取用户 |
POST | /api/v1/users |
创建新用户 |
PUT | /api/v1/users/:id |
更新用户 |
DELETE | /api/v1/users/:id |
删除用户 |
我们提供全面的测试脚本,帮助您探索和验证示例:
# 测试基础服务器(确保它已经在运行)
./scripts/test_basic.sh
# 测试 REST API 服务器(确保它已经在运行)
./scripts/test_api.sh
# 运行性能基准测试
./scripts/benchmark.sh all
# 状态检查
curl http://127.0.0.1:3000/api/status
# 个性化问候
curl http://127.0.0.1:3000/hello/world
# 回显测试
curl -X POST -H "Content-Type: application/json" \
-d '{"message":"Hello H3z!"}' \
http://127.0.0.1:3000/api/echo
# 用户端点
curl http://127.0.0.1:3000/users/123
# 计算器端点
curl -X POST -H "Content-Type: application/json" \
-d '{"a":10,"b":5,"op":"add"}' \
http://127.0.0.1:3000/api/calculate
# 测试基本模式
curl http://127.0.0.1:3000/api/status
# 测试安全模式(不同端口)
curl http://127.0.0.1:3001/health
curl http://127.0.0.1:3001/config
# 测试开发模式
curl http://127.0.0.1:3002/debug
# 参数路由
curl http://127.0.0.1:3000/users/123
curl http://127.0.0.1:3000/users/123/posts/456
# 查询参数
curl "http://127.0.0.1:3000/search?q=test&page=1"
# 通配符路由
curl http://127.0.0.1:3000/static/css/style.css
# 文件上传
curl -X POST -F "file=@example.txt" http://127.0.0.1:3000/upload
# 需要身份验证
curl -H "Authorization: Bearer valid-token-123" \
http://127.0.0.1:3000/protected
# 用户 CRUD
curl http://127.0.0.1:3000/api/v1/users
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"john@example.com"}' \
http://127.0.0.1:3000/api/v1/users
curl -X PUT -H "Content-Type: application/json" \
-d '{"name":"John Updated"}' \
http://127.0.0.1:3000/api/v1/users/1
curl -X DELETE http://127.0.0.1:3000/api/v1/users/1
# 产品 CRUD
curl http://127.0.0.1:3000/api/v1/products
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"Widget","price":29.99,"category":"tools"}' \
http://127.0.0.1:3000/api/v1/products
# 订单 CRUD
curl http://127.0.0.1:3000/api/v1/orders
curl -X POST -H "Content-Type: application/json" \
-d '{"user_id":1,"product_id":1,"quantity":2}' \
http://127.0.0.1:3000/api/v1/orders
# 统计
curl http://127.0.0.1:3000/api/v1/stats
# 测试中间件栈
curl -v http://127.0.0.1:3000/api/middleware-info
# 测试计时中间件
curl http://127.0.0.1:3000/api/timing
# 测试身份验证中间件
curl -H "Authorization: Bearer valid-token-123" \
http://127.0.0.1:3000/auth-required
# 测试验证中间件
curl -X POST -H "Content-Type: application/json" \
-d '{"test":"data"}' \
http://127.0.0.1:3000/api/validated
安全模式展示了:
示例展示了各种中间件:
h3z-examples/
├── build.zig # 构建配置
├── build.zig.zon # 依赖管理
├── src/
│ ├── basic_server.zig # 基础服务器示例
│ ├── multi_mode_server.zig # 多模式服务器
│ ├── middleware_example.zig # 中间件演示
│ ├── advanced_routing.zig # 高级路由功能
│ ├── rest_api.zig # REST API 示例
│ └── tests.zig # 单元测试
├── scripts/
│ ├── test_basic.sh # 基础服务器测试脚本
│ ├── test_api.sh # API 测试脚本
│ └── benchmark.sh # 性能基准测试
├── LICENSE # MIT 许可证
└── README.md # 本文件
欢迎贡献!以下是您可以帮助的方式:
git checkout -b feature/amazing-feature
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
zig build test
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
如果这个项目帮助您学习了 Zig 或 H3z,请给一个 ⭐️!