# API 文档 - WSDL 转换功能 ## 元数据 - **需求编号**:002-07 - **需求名称**:WSDL 转换 - **创建时间**:2026-02-05 - **创建人**:AI Assistant - **版本**:v1.0.0 ## API 概述 WSDL 转换 API 提供将 WSDL 文件转换为 Apex 类的功能,支持从 URL 和 XML 两种方式进行转换,并提供转换历史查询、转换详情查询、删除转换记录等功能。 **基础路径**:`/wsdl` **模块**:`datai-salesforce-apex` ## 接口列表 ### 1. 从 URL 转换 WSDL - **功能描述**:从 WSDL URL 转换 WSDL 到 Apex 类 - **请求方式**:POST - **请求路径**:`/wsdl/conversion/convertFromUrl` - **权限要求**:`apex:wsdl:convert` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | wsdlUrl | String | 是 | WSDL URL,长度 1-500 字符 | | packageName | String | 否 | 包名称,长度 0-255 字符 | | generateAsync | Boolean | 否 | 是否生成异步方法,默认 false | #### 请求示例 ```json { "wsdlUrl": "https://example.com/service?wsdl", "packageName": "com.example", "generateAsync": true } ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Object | 转换结果 | | data.conversionId | Long | 转换记录 ID | | data.success | Boolean | 转换是否成功 | | data.apexClasses | Array | 生成的 Apex 类列表 | | data.warnings | Array | 警告信息列表 | | data.errors | Array | 错误信息列表 | #### 成功响应示例 ```json { "code": 200, "message": "WSDL 转换成功", "data": { "conversionId": 1, "success": true, "apexClasses": [ { "classId": 1, "className": "ExampleService", "classType": "Class", "classBody": "public class ExampleService { ... }" }, { "classId": 2, "className": "ExampleServiceRequest", "classType": "Class", "classBody": "public class ExampleServiceRequest { ... }" } ], "warnings": [ "警告:某些类型可能无法完全转换" ], "errors": [] } } ``` #### 失败响应示例 ```json { "code": 400, "message": "WSDL URL 不能为空", "data": null } ``` --- ### 2. 从 XML 转换 WSDL - **功能描述**:从 WSDL XML 内容转换 WSDL 到 Apex 类 - **请求方式**:POST - **请求路径**:`/wsdl/conversion/convertFromXml` - **权限要求**:`apex:wsdl:convert` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | wsdlXml | String | 是 | WSDL XML 内容 | | packageName | String | 否 | 包名称,长度 0-255 字符 | | generateAsync | Boolean | 否 | 是否生成异步方法,默认 false | #### 请求示例 ```json { "wsdlXml": "...", "packageName": "com.example", "generateAsync": false } ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Object | 转换结果 | | data.conversionId | Long | 转换记录 ID | | data.success | Boolean | 转换是否成功 | | data.apexClasses | Array | 生成的 Apex 类列表 | | data.warnings | Array | 警告信息列表 | | data.errors | Array | 错误信息列表 | #### 成功响应示例 ```json { "code": 200, "message": "WSDL 转换成功", "data": { "conversionId": 2, "success": true, "apexClasses": [ { "classId": 3, "className": "MyService", "classType": "Class", "classBody": "public class MyService { ... }" } ], "warnings": [], "errors": [] } } ``` #### 失败响应示例 ```json { "code": 400, "message": "WSDL XML 内容不能为空", "data": null } ``` --- ### 3. 查询转换历史列表 - **功能描述**:分页查询 WSDL 转换历史记录,支持多种筛选条件 - **请求方式**:GET - **请求路径**:`/wsdl/conversion/list` - **权限要求**:`apex:wsdl:list` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | pageNum | Integer | 否 | 当前页码,默认 1 | | pageSize | Integer | 否 | 每页记录数,默认 10 | | status | String | 否 | 转换状态(success/failed) | | startTime | String | 否 | 开始时间(格式:yyyy-MM-dd HH:mm:ss) | | endTime | String | 否 | 结束时间(格式:yyyy-MM-dd HH:mm:ss) | #### 请求示例 ``` GET /wsdl/conversion/list?status=success&pageNum=1&pageSize=20 ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Object | 分页数据 | | data.total | Long | 总记录数 | | data.rows | Array | 转换记录列表 | | data.rows[].conversionId | Long | 转换记录 ID | | data.rows[].orgType | String | 组织类型 | | data.rows[].orgId | String | 组织 ID | | data.rows[].wsdlUrl | String | WSDL URL | | data.rows[].packageName | String | 包名称 | | data.rows[].generateAsync | Boolean | 是否生成异步方法 | | data.rows[].status | String | 转换状态 | | data.rows[].errorMessage | String | 错误消息 | | data.rows[].createTime | String | 创建时间 | | data.rows[].updateTime | String | 更新时间 | #### 成功响应示例 ```json { "code": 200, "message": "查询成功", "data": { "total": 50, "rows": [ { "conversionId": 1, "orgType": "source", "orgId": "00Dxx0000001GWP", "wsdlUrl": "https://example.com/service?wsdl", "packageName": "com.example", "generateAsync": true, "status": "success", "errorMessage": null, "createTime": "2026-02-05 10:00:00", "updateTime": "2026-02-05 10:00:30" } ] } } ``` --- ### 4. 查询转换记录详情 - **功能描述**:根据 ID 查询单个 WSDL 转换记录的详细信息 - **请求方式**:GET - **请求路径**:`/wsdl/conversion/{conversionId}` - **权限要求**:`apex:wsdl:query` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | conversionId | Long | 是 | 转换记录 ID,路径参数 | #### 请求示例 ``` GET /wsdl/conversion/1 ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Object | 转换记录详情 | | data.conversionId | Long | 转换记录 ID | | data.orgType | String | 组织类型 | | data.orgId | String | 组织 ID | | data.wsdlUrl | String | WSDL URL | | data.wsdlXml | String | WSDL XML 内容 | | data.packageName | String | 包名称 | | data.generateAsync | Boolean | 是否生成异步方法 | | data.status | String | 转换状态 | | data.errorMessage | String | 错误消息 | | data.createTime | String | 创建时间 | | data.updateTime | String | 更新时间 | | data.apexClasses | Array | 生成的 Apex 类列表 | | data.apexClasses[].classId | Long | 类 ID | | data.apexClasses[].className | String | 类名称 | | data.apexClasses[].classType | String | 类类型 | | data.apexClasses[].classBody | String | 类代码 | | data.apexClasses[].namespace | String | 命名空间 | | data.apexClasses[].isAsync | Boolean | 是否异步 | | data.apexClasses[].createTime | String | 创建时间 | #### 成功响应示例 ```json { "code": 200, "message": "查询成功", "data": { "conversionId": 1, "orgType": "source", "orgId": "00Dxx0000001GWP", "wsdlUrl": "https://example.com/service?wsdl", "wsdlXml": null, "packageName": "com.example", "generateAsync": true, "status": "success", "errorMessage": null, "createTime": "2026-02-05 10:00:00", "updateTime": "2026-02-05 10:00:30", "apexClasses": [ { "classId": 1, "className": "ExampleService", "classType": "Class", "classBody": "public class ExampleService { ... }", "namespace": "com.example", "isAsync": false, "createTime": "2026-02-05 10:00:00" } ] } } ``` #### 失败响应示例 ```json { "code": 404, "message": "转换记录不存在", "data": null } ``` --- ### 5. 删除转换记录 - **功能描述**:删除指定的 WSDL 转换记录 - **请求方式**:DELETE - **请求路径**:`/wsdl/conversion/{conversionId}` - **权限要求**:`apex:wsdl:delete` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | conversionId | Long | 是 | 转换记录 ID,路径参数 | #### 请求示例 ``` DELETE /wsdl/conversion/1 ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Integer | 删除的记录数 | #### 成功响应示例 ```json { "code": 200, "message": "删除成功", "data": 1 } ``` #### 失败响应示例 ```json { "code": 404, "message": "转换记录不存在", "data": null } ``` --- ### 6. 批量删除转换记录 - **功能描述**:批量删除 WSDL 转换记录 - **请求方式**:DELETE - **请求路径**:`/wsdl/conversion/batch` - **权限要求**:`apex:wsdl:delete` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | conversionIds | Array | 是 | 转换记录 ID 列表 | #### 请求示例 ```json { "conversionIds": [1, 2, 3] } ``` #### 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | code | Integer | 状态码(200 成功,其他失败) | | message | String | 提示信息 | | data | Integer | 删除的记录数 | #### 成功响应示例 ```json { "code": 200, "message": "批量删除成功,删除 3 条记录", "data": 3 } ``` #### 失败响应示例 ```json { "code": 400, "message": "转换记录 ID 列表不能为空", "data": null } ``` --- ## 错误码 | 错误码 | 错误名称 | 说明 | HTTP 状态码 | |--------|---------|------|-------------| | WSDL_001 | WSDL_URL_EMPTY | WSDL URL 不能为空 | 400 | | WSDL_002 | WSDL_XML_EMPTY | WSDL XML 内容不能为空 | 400 | | WSDL_003 | WSDL_CONVERT_FAILED | WSDL 转换失败 | 500 | | WSDL_004 | CONVERSION_NOT_FOUND | 转换记录不存在 | 404 | | WSDL_005 | CONVERSION_ID_EMPTY | 转换记录 ID 不能为空 | 400 | | WSDL_006 | BATCH_DELETE_IDS_EMPTY | 批量删除 ID 列表不能为空 | 400 | | WSDL_007 | WSDL_PARSE_FAILED | WSDL 解析失败 | 500 | | WSDL_008 | APEX_CLASS_GENERATE_FAILED | Apex 类生成失败 | 500 | ## 相关文档 - [需求文档](../requirements/sub/2026-01-28-002-07-WSDL转换.md) - [设计文档](../design/2026-02-03-002-07-WSDL转换-设计.md) - [决策记录](../decisions/2026-02-03-002-07-ADR-WSDL转换技术选型.md) - [SQL 脚本](../sql/2026-02-03-002-07-WSDL转换.sql) - [提示词文档](../prompts/2026-02-03-002-07-prompt-WSDL转换.md) - [变更日志](../changelog/2026-02-05-002-07-changelog.md) - [复盘文档](../retros/2026-02-05-002-07-retro.md)