datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-02-05-004-01-api.md

405 lines
11 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.

# API 文档 - Tooling 连接管理
## 元数据
- **需求编号**: 004-01
- **子需求名称**: 连接管理
- **版本号**: v1.0.0
- **创建时间**: 2026-02-05
- **创建人**: AI Assistant
- **状态**: 已完成
## API 概述
Tooling 连接管理 API 提供对 Salesforce Tooling API 连接的管理功能,包括获取连接、清除缓存、测试连接、设置调用选项、设置调试头部等。这些 API 是 Tooling API 模块的基础组件,为后续元数据操作、开发工具功能等提供连接管理能力。
### 基础信息
- **基础路径**: `/salesforce/tooling/connection`
- **认证方式**: JWT Token + 权限校验
- **Content-Type**: `application/json`
- **API 版本**: v1.0.0
### 权限要求
所有接口都需要以下权限:
- `tooling:connection:get` - 获取连接
- `tooling:connection:clear` - 清除缓存
- `tooling:connection:test` - 测试连接
- `tooling:connection:callOptions` - 设置调用选项
- `tooling:connection:debuggingHeader` - 设置调试头部
## 接口列表
### 1. 获取连接
#### 接口说明
获取 Tooling API 连接。如果缓存中没有有效连接,则创建新连接并缓存。连接创建时会验证 Session 有效性。
#### 请求信息
- **请求方式**: GET
- **请求路径**: `/salesforce/tooling/connection/get`
- **权限要求**: `tooling:connection:get`
#### 请求参数
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 连接结果对象 |
| data.success | Boolean | 是否成功 |
| data.valid | Boolean | 连接是否有效 |
| data.testTime | String | 测试时间格式yyyy-MM-dd HH:mm:ss |
| data.responseTime | Long | 响应时间(毫秒) |
| data.errorCode | String | 错误码(失败时返回) |
| data.errorMessage | String | 错误消息(失败时返回) |
#### 成功示例
```json
{
"code": 200,
"msg": "获取连接成功",
"data": {
"success": true,
"valid": true,
"testTime": "2026-02-05 14:30:25",
"responseTime": 156
}
}
```
#### 失败示例
```json
{
"code": 500,
"msg": "操作失败",
"data": {
"success": false,
"valid": false,
"errorCode": "TOOLING_CONN_006",
"errorMessage": "用户未登录或会话已过期"
}
}
```
#### 错误码
- `TOOLING_CONN_001`: Session 无效或已过期
- `TOOLING_CONN_002`: 连接创建失败
- `TOOLING_CONN_006`: 用户未登录或会话已过期
---
### 2. 清除连接缓存
#### 接口说明
清除缓存的 Tooling API 连接。下次获取连接时将创建新连接。
#### 请求信息
- **请求方式**: DELETE
- **请求路径**: `/salesforce/tooling/connection/clear`
- **权限要求**: `tooling:connection:clear`
#### 请求参数
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 无数据返回 |
#### 成功示例
```json
{
"code": 200,
"msg": "清除连接缓存成功",
"data": null
}
```
#### 失败示例
```json
{
"code": 500,
"msg": "清除连接缓存失败: 清除缓存时发生错误",
"data": null
}
```
#### 错误码
- `TOOLING_CONN_003`: 网络超时
- `TOOLING_CONN_008`: 未知错误
---
### 3. 测试连接
#### 接口说明
测试 Tooling API 连接是否有效。通过执行简单的 SOQL 查询来验证连接。
#### 请求信息
- **请求方式**: GET
- **请求路径**: `/salesforce/tooling/connection/test`
- **权限要求**: `tooling:connection:test`
#### 请求参数
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 测试结果对象 |
| data.success | Boolean | 是否成功 |
| data.valid | Boolean | 连接是否有效 |
| data.testTime | String | 测试时间格式yyyy-MM-dd HH:mm:ss |
| data.responseTime | Long | 响应时间(毫秒) |
| data.errorCode | String | 错误码(失败时返回) |
| data.errorMessage | String | 错误消息(失败时返回) |
#### 成功示例
```json
{
"code": 200,
"msg": "测试连接成功",
"data": {
"success": true,
"valid": true,
"testTime": "2026-02-05 14:30:25",
"responseTime": 234
}
}
```
#### 失败示例
```json
{
"code": 500,
"msg": "操作失败",
"data": {
"success": false,
"valid": false,
"errorCode": "TOOLING_CONN_001",
"errorMessage": "Session 无效或已过期"
}
}
```
#### 错误码
- `TOOLING_CONN_001`: Session 无效或已过期
- `TOOLING_CONN_002`: 连接创建失败
- `TOOLING_CONN_003`: 网络超时
---
### 4. 设置调用选项
#### 接口说明
设置 Tooling API 连接的调用选项,如客户端名称等。
#### 请求信息
- **请求方式**: POST
- **请求路径**: `/salesforce/tooling/connection/call-options`
- **权限要求**: `tooling:connection:callOptions`
- **Content-Type**: `application/json`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| client | String | 否 | 客户端名称,用于标识调用来源 |
| defaultNamespace | String | 否 | 默认命名空间 |
| clientId | String | 否 | 客户端 ID |
#### 请求示例
```json
{
"client": "DataI-Tooling-Client",
"defaultNamespace": "",
"clientId": "datai-tooling-001"
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 设置结果对象 |
| data.success | Boolean | 是否成功 |
| data.errorCode | String | 错误码(失败时返回) |
| data.errorMessage | String | 错误消息(失败时返回) |
#### 成功示例
```json
{
"code": 200,
"msg": "设置调用选项成功",
"data": {
"success": true
}
}
```
#### 失败示例
```json
{
"code": 500,
"msg": "操作失败",
"data": {
"success": false,
"errorCode": "TOOLING_CONN_007",
"errorMessage": "设置调用选项失败"
}
}
```
#### 错误码
- `TOOLING_CONN_007`: 设置调用选项失败
---
### 5. 设置调试头部
#### 接口说明
设置 Tooling API 连接的调试头部,用于控制调试信息的输出级别。
#### 请求信息
- **请求方式**: POST
- **请求路径**: `/salesforce/tooling/connection/debugging-header`
- **权限要求**: `tooling:connection:debuggingHeader`
- **Content-Type**: `application/json`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| debugLevel | String | 是 | 调试级别可选值NONE、DEBUG_ONLY、DB、PROFILING、CALLOUT、DETAIL |
| categories | Array | 否 | 调试类别列表 |
#### 调试级别说明
| 级别 | 说明 |
|------|------|
| NONE | 不输出调试信息 |
| DEBUG_ONLY | 仅输出调试日志 |
| DB | 输出数据库操作信息 |
| PROFILING | 输出性能分析信息 |
| CALLOUT | 输出外部调用信息 |
| DETAIL | 输出详细信息 |
#### 请求示例
```json
{
"debugLevel": "DEBUG_ONLY",
"categories": ["Apex", "Visualforce"]
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 设置结果对象 |
| data.success | Boolean | 是否成功 |
| data.errorCode | String | 错误码(失败时返回) |
| data.errorMessage | String | 错误消息(失败时返回) |
#### 成功示例
```json
{
"code": 200,
"msg": "设置调试头部成功",
"data": {
"success": true
}
}
```
#### 失败示例
```json
{
"code": 500,
"msg": "操作失败",
"data": {
"success": false,
"errorCode": "TOOLING_CONN_008",
"errorMessage": "设置调试头部失败"
}
}
```
#### 错误码
- `TOOLING_CONN_008`: 设置调试头部失败
---
## 错误码汇总
| 错误码 | 错误消息 | 说明 |
|--------|----------|------|
| TOOLING_CONN_001 | Session 无效或已过期 | Session 已过期或无效,需要重新登录 |
| TOOLING_CONN_002 | 连接创建失败 | 创建 ToolingConnection 时发生错误 |
| TOOLING_CONN_003 | 网络超时 | 连接 Salesforce API 超时 |
| TOOLING_CONN_004 | 权限不足 | 当前用户没有执行该操作的权限 |
| TOOLING_CONN_005 | API 版本不支持 | 当前 API 版本不支持该操作 |
| TOOLING_CONN_006 | 用户未登录 | 用户未登录或会话已过期 |
| TOOLING_CONN_007 | 设置调用选项失败 | 设置调用选项时发生错误 |
| TOOLING_CONN_008 | 设置调试头部失败 | 设置调试头部时发生错误 |
## 接口调用场景
### 场景 1: 初始化连接
在需要使用 Tooling API 之前,先调用"获取连接"接口确保连接可用。
```
1. 调用 GET /salesforce/tooling/connection/get
2. 如果返回成功,连接已准备好
3. 如果返回失败(如 Session 过期),需要先登录
```
### 场景 2: 定期测试连接
可以定期调用"测试连接"接口检查连接状态,及时发现连接问题。
```
1. 定时调用 GET /salesforce/tooling/connection/test
2. 如果返回失败,调用 GET /salesforce/tooling/connection/get 重新获取连接
```
### 场景 3: 切换环境
在需要切换到不同的 Salesforce 环境时,先清除缓存再获取新连接。
```
1. 调用 DELETE /salesforce/tooling/connection/clear 清除缓存
2. 调用 GET /salesforce/tooling/connection/get 获取新连接
```
### 场景 4: 调试问题
在排查问题时,可以设置调试头部获取更多调试信息。
```
1. 调用 POST /salesforce/tooling/connection/debugging-header 设置调试级别为 DETAIL
2. 执行需要调试的操作
3. 查看调试日志
4. 调用 POST /salesforce/tooling/connection/debugging-header 恢复调试级别为 NONE
```
## 注意事项
1. **连接缓存**: 连接会被缓存以提高性能,但在 Session 过期或需要切换环境时需要清除缓存。
2. **Session 有效性**: 获取连接时会自动验证 Session 有效性,如果 Session 过期会返回错误。
3. **线程安全**: 连接缓存使用 ConcurrentHashMap 实现,线程安全。
4. **异常处理**: 所有接口都遵循统一的异常处理规范,返回标准的 AjaxResult 格式。
5. **权限控制**: 所有接口都需要相应的权限,确保安全性。
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-004-01-连接管理.md)
- [设计文档](../design/2026-02-03-004-01-连接管理-设计.md)
- [决策记录](../decisions/2026-02-03-004-01-ADR-连接管理技术选型.md)
- [提示词](../prompts/2026-02-03-004-01-prompt-Tooling连接管理.md)
- [变更日志](../changelog/2026-02-05-004-01-changelog.md)
- [复盘文档](../retros/2026-02-05-004-01-retro.md)