Files
ruoyi-java/doc/写入API字段名错误修复.md
2025-11-06 11:54:37 +08:00

6.1 KiB
Raw Permalink Blame History

写入 API 字段名错误修复

🔴 问题现象

API 返回错误:

{
  "code": 400001,
  "message": "request name error",
  "details": {
    "DebugInfo": {
      "traceId": "ae0bfc4bfa674e258557e70b4f430a4c"
    }
  },
  "internalCode": 0
}

错误信息request name error - 请求名称错误


🔍 根本原因

根据腾讯文档官方 batchUpdate 文档,所有请求类型名称必须以 Request 结尾

错误的请求体

{
  "requests": [
    {
      "updateCells": {  // ❌ 错误:缺少 "Request" 后缀
        "range": {...},
        "rows": [...]
      }
    }
  ]
}

正确的请求体

{
  "requests": [
    {
      "updateCellsRequest": {  // ✅ 正确:必须是 "updateCellsRequest"
        "range": {...},
        "rows": [...]
      }
    }
  ]
}

📚 官方文档示例

根据官方文档,所有请求类型都遵循 xxxRequest 的命名规范:

示例 1添加工作表

{
  "requests": [
    {
      "addSheetRequest": {  // ✅ addSheetRequest
        "title": "测试添加子表",
        "rowCount": 10,
        "columnCount": 10
      }
    }
  ]
}

示例 2删除维度

{
  "requests": [
    {
      "deleteDimensionRequest": {  // ✅ deleteDimensionRequest
        "sheetId": "BB08J2",
        "dimension": "COLUMN",
        "startIndex": 1,
        "endIndex": 3
      }
    }
  ]
}

示例 3更新单元格我们的场景

{
  "requests": [
    {
      "updateCellsRequest": {  // ✅ updateCellsRequest
        "range": {
          "sheetId": "BB08J2",
          "startRowIndex": 2,
          "endRowIndex": 3,
          "startColumnIndex": 12,
          "endColumnIndex": 13
        },
        "rows": [
          {
            "values": [
              {
                "cellValue": {
                  "text": "https://3.cn/2ume-Ak1"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

修复代码

修改前

// ❌ 错误
JSONObject request = new JSONObject();
request.put("updateCells", updateCells);  // 缺少 "Request" 后缀
requests.add(request);

修改后

// ✅ 正确
JSONObject request = new JSONObject();
request.put("updateCellsRequest", updateCells);  // 必须是 "updateCellsRequest"
requests.add(request);

📊 请求类型命名规范

根据官方文档,常见的请求类型包括:

请求类型 正确名称 说明
添加工作表 addSheetRequest 以 Request 结尾
删除工作表 deleteSheetRequest 以 Request 结尾
更新单元格 updateCellsRequest 以 Request 结尾
删除维度 deleteDimensionRequest 以 Request 结尾
插入维度 insertDimensionRequest 以 Request 结尾
合并单元格 mergeCellsRequest 以 Request 结尾

规律:所有请求类型名称 = {操作名称}Request


🧪 验证结果

修复前(错误)

请求体: {"requests":[{"updateCells":{...}}]}
响应: {"code":400001, "message":"request name error"}

修复后(正确)

请求体: {"requests":[{"updateCellsRequest":{...}}]}
预期响应: {"ret":0, "msg":"Succeed", "data":{"replies":[]}}

📝 修改文件清单

文件 修改内容 状态
TencentDocApiUtil.java updateCellsupdateCellsRequest

修改位置

// 文件TencentDocApiUtil.java
// 方法writeSheetData()
// 行号:约 420 行

// 修改:
request.put("updateCellsRequest", updateCells);  // ✅

🎯 预期效果

完整日志(修复后)

写入表格数据batchUpdate- range: M3, rowIndex: 2, colIndex: 12
请求体: {
  "requests": [
    {
      "updateCellsRequest": {
        "range": {
          "sheetId": "BB08J2",
          "startRowIndex": 2,
          "endRowIndex": 3,
          "startColumnIndex": 12,
          "endColumnIndex": 13
        },
        "rows": [
          {
            "values": [
              {
                "cellValue": {
                  "text": "https://3.cn/2ume-Ak1"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
API响应状态码: 200
API响应: {"ret":0, "msg":"Succeed", "data":{"replies":[]}}
成功写入物流链接 - 单元格: M3, 单号: JY2025110329041 ✅

📚 参考文档


⚠️ 关键提醒

1. 请求类型命名必须严格遵循规范

错误示例

{
  "requests": [
    {"updateCells": {...}},      // 错误:缺少 Request
    {"addSheet": {...}},         // 错误:缺少 Request
    {"deleteDimension": {...}}   // 错误:缺少 Request
  ]
}

正确示例

{
  "requests": [
    {"updateCellsRequest": {...}},      // 正确
    {"addSheetRequest": {...}},         // 正确
    {"deleteDimensionRequest": {...}}   // 正确
  ]
}

2. 大小写敏感

  • updateCellsRequest - 正确(驼峰命名)
  • UpdateCellsRequest - 错误(首字母大写)
  • updatecellsrequest - 错误(全小写)
  • update_cells_request - 错误(下划线)

3. 字段名不能自定义

所有请求类型名称都由腾讯文档 API 官方定义,不能自己创造或修改


总结

问题

使用了错误的字段名 updateCells,应该是 updateCellsRequest

原因

腾讯文档 batchUpdate API 要求所有请求类型名称必须以 Request 结尾。

解决

request.put("updateCells", ...) 改为 request.put("updateCellsRequest", ...)

结果

API 调用成功,物流链接正确写入表格!


文档版本1.0
创建时间2025-11-05
依据:腾讯文档开放平台官方 API 文档
状态 已修复