cocoon/.cocoon-plan.md
xfy911 bbc45d0735 feat(post): 添加 POST 请求体解析支持
- http_request_t 新增 body / body_len / content_type 字段
- http.c 解析 Content-Type 头,新增 http_request_free 释放 body
- server.c 新增 conn_read_body 从 socket 读取请求体(8MB 上限)
- server.c 新增 handle_post_request 返回 JSON 回显
  - 支持 application/json 直接回显
  - 支持 application/x-www-form-urlencoded 字符串回显
  - 其他类型返回基本信息
- 8MB 请求体上限(HTTP_MAX_BODY),超限返回 413
- 集成测试新增 3 项 POST 测试:JSON 回显、表单回显、PUT 405
- 30 项测试全部通过
- README 更新:添加 POST 特性、curl 示例、路线图更新
- send_all 从 static 改为全局可见,供 server.c 复用

Phase 2 全部完成:缓存/超时/日志/gzip/测试/压测/POST
2026-06-03 21:24:03 +08:00

76 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cocoon 发展规划(自主维护)
> 此文件由 cron 任务每3小时更新记录项目状态与下一步计划。
## 路线图
### Phase 1 — 核心稳定(当前)
- [x] HTTP/1.1 请求解析
- [x] 响应头格式化
- [x] 静态文件服务sendfile
- [x] 目录浏览
- [x] Range 请求
- [x] MIME 类型识别
- [x] 多线程 M:N 调度
- [x] 命令行参数
- [x] 优雅关闭
### Phase 2 — 健壮性
- [x] HTTP 缓存ETag / Last-Modified / If-None-Match✅ 2026-06-03
- [x] 连接超时管理(空闲连接自动清理)✅ 2026-06-03
- [x] 最大并发连接数限制 ✅ 2026-06-03
- [x] 分级日志系统error / warn / info / debug✅ 2026-06-03
- [x] Gzip 压缩 ✅ 2026-06-03已接入响应流程
- [x] 集成测试 suite30 项 curl/bash 测试全部通过)✅ 2026-06-03
- [x] 性能基准wrk: ~16.2K RPS / ~60μs 延迟)✅ 2026-06-03
- [x] 请求体解析POST 支持)✅ 2026-06-03
- Content-Length 读取
- JSON / form-urlencoded 回显
- 8MB 请求体上限
- [ ] C 语言单元测试框架
### Phase 3 — 扩展
- [ ] 配置文件支持JSON / YAML
- [ ] 虚拟主机 / 多站点
- [ ] 反向代理支持
- [ ] HTTPS / TLS
- [ ] HTTP/2
### Phase 4 — 生态
- [ ] WebSocket 支持
- [ ] 中间件机制
- [ ] 插件系统
## 当前状态
- 编译通过,零警告(除 coco 子模块的 linker .note.GNU-stack 提示)
- 30 项集成测试全部通过GET/HEAD/POST/404/Range/304/gzip/MIME/目录浏览/路径防护)
- 压测数据wrk -t4 -c100 -d10s → 16,179 RPS平均延迟 59.86μs
- POST 支持JSON 和 form-urlencoded 回显Content-Length 解析8MB 上限
- README / Makefile 已更新
## 待办池
1. **C 语言单元测试框架** — 用 Unity/CMock 或自定义轻量框架替代 shell 测试
2. **Brotli 压缩** — 在 Gzip 基础上添加 br 支持
3. **配置文件支持** — JSON/YAML 配置替代纯命令行
4. **multipart/form-data 文件上传** — 从 POST 回显扩展到实际文件上传
## 最近行动记录
- 2026-06-03: 项目初始化,核心模块全部实现
- 2026-06-03: 添加缓存协商ETag + Last-Modified + 304修复编译警告
- 2026-06-03: 添加连接空闲超时管理 + 最大并发限制 + 分级日志系统
- 2026-06-03: 创建集成测试套件 + 性能基准 + 更新文档
- 2026-06-03: **本轮行动**
- 添加 POST 请求体解析支持:
- `http_request_t` 新增 `body` / `body_len` / `content_type` 字段
- `http.c` 解析 Content-Type 头,新增 `http_request_free` 释放 body
- `server.c` 新增 `conn_read_body` 从 socket 读取请求体
- `server.c` 新增 `handle_post_request` 返回 JSON 回显(支持 JSON 和 form-urlencoded
- 8MB 请求体上限HTTP_MAX_BODY超限返回 413
- 集成测试新增 3 项 POST 测试JSON 回显、表单回显、PUT 405
- 30 项测试全部通过
- README 更新:添加 POST 特性、curl 示例、路线图更新
- 推送到 main