server添加数据库
[任务规划完成]
让我先查看项目的路由配置和相关文件,确认接口的完整路径和请求参数格式。
[读取文件]
现在让我再看一下常量定义,确认 Header 的 key 名称:
[读取文件]
现在我掌握了所有信息。以下是完整的测试指南:
如何测试 Chat 接口
接口信息
从配置文件中可以看到:
| 配置 | 值 |
|---|---|
| 监听 IP | 0.0.0.0 |
| 监听端口 | 8086 |
| 路由前缀 | /openclaw → /api |
| 接口路径 | POST /chat |
所以完整的接口地址是:http://localhost:8086/openclaw/api/chat
请求参数说明
从 chat_controller.go 的 Chat 方法可以看到,请求分为两部分:
HTTP Header(由
ParseHeaderToAidContext解析):User-Id:用户 ID(必填,校验逻辑会用到)Env-Id:环境/会话 IDTask-Id:任务 IDBot-Id:Bot IDRequest-Id:请求 ID
JSON Body(由
tool.RequestParam解析为ChatRequest):content:消息内容
用 curl 发送测试请求
1 | curl -X POST http://localhost:8086/openclaw/api/chat \ |
预期响应
✅ 场景 1:用户在数据库中有 is_use=1 的记录
服务会返回空 JSON(异步模式),HTTP 200:
1 | {} |
然后在后台异步将消息转发给 OpenClaw 服务器。
❌ 场景 2:用户不在数据库中 / 没有启用的配置
会返回错误信息,类似:
1 | { |
❌ 场景 3:缺少 User-Id Header
1 | # 不传 User-Id 测试 |
会返回:
1 | { |
测试步骤建议
第一步:先测试用户校验(不需要 OpenClaw 服务器也能测)
直接发送请求,因为数据库中可能还没有配置该用户的记录,所以会触发校验失败的错误,这说明整个链路(HTTP → Controller → Service → DAO → MySQL)是通的:
1 | curl -v -X POST http://localhost:8086/openclaw/api/chat \ |
第二步:在数据库中插入一条测试数据
1 | INSERT INTO openclaw_server_config (user_id, pod_ip, port, is_use) |
第三步:再次发送请求,验证校验通过
1 | curl -v -X POST http://localhost:8086/openclaw/api/chat \ |
此时如果数据库校验通过,会返回空响应 {},后台 goroutine 会尝试将消息转发给 OpenClaw 服务器(http://127.0.0.1:8888/metis/events)。
第四步:查看日志确认完整流程
日志配置为文件输出(log/openclaw_assistant.log),可以用 tail -f 实时查看:
1 | tail -f log/openclaw_assistant.log |
日志中你应该能看到类似的输出:
1 | [Chat] 收到请求: {...} |
整体流程图
1 | sequenceDiagram |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.