# 快速修复:请求体为空问题 ## 问题 ``` POST /platform/qiniu/save 400 {"code": 400, "msg": "参数解析失败: 请求体为空"} ``` ## 快速修复步骤 ### 1. 重启后端服务(已修改配置) ```bash systemctl restart go-api ``` ### 2. 查看服务状态 ```bash systemctl status go-api ``` 预期输出: ``` ● go-api.service - Go API Server Loaded: loaded Active: active (running) ``` ### 3. 查看日志 ```bash tail -f /www/wwwroot/api.yunzer.cn/go.log ``` ### 4. 测试上传 1. 登录系统 2. 进入软件升级页面 3. 上传一个文件 ### 5. 观察日志输出 应该看到: ``` SaveFileRecord 请求体长度: xxx SaveFileRecord 请求体内容: {"key":"...","hash":"...","size":...} ``` ## 已修改的文件 ✅ `go/main.go` - 添加 `beego.BConfig.CopyRequestBody = true` ✅ `go/conf/app.conf` - 添加 `copyrequestbody = true` ✅ `go/controllers/qiniu_upload.go` - 添加调试日志 ## 如果还是失败 ### 检查 1: 服务是否重启成功 ```bash systemctl status go-api ``` 如果失败,查看错误: ```bash journalctl -u go-api -n 50 ``` ### 检查 2: 配置是否生效 查看日志中是否有请求体内容输出。如果没有,说明配置未生效。 ### 检查 3: 前端请求是否正确 打开浏览器开发者工具,查看 Network 标签: - 请求方法:POST - Content-Type: application/json - 请求体:应该有 JSON 数据 ## 完整上传流程 ``` 1. 前端上传文件到七牛云 ✓ ↓ 2. 七牛云返回文件信息 ✓ { "key": "2026/04/09/xxx.exe", "hash": "xxx", "size": 60742452 } ↓ 3. 前端调用 /platform/qiniu/save ← 这里失败了 POST /platform/qiniu/save Body: { "key": "...", "hash": "...", "size": ..., "name": "...", "mimeType": "...", "cate": 0 } ↓ 4. 后端保存到数据库 ← 修复后应该成功 ↓ 5. 返回文件 URL ``` ## 修复原理 Beego 框架默认不复制请求体,需要启用 `CopyRequestBody`: ```go // 修复前 c.Ctx.Input.RequestBody // 空的 // 修复后(启用 CopyRequestBody) c.Ctx.Input.RequestBody // 包含请求体数据 ``` ## 更新时间 2026-04-09