接口导出Excel在swagger上导出后无法打开

本文将指导您如何在Swagger中调整配置以实现动态下拉模板的生成,重点在于API接口的描述和文件输出格式的应用。

这个时候我们需要在swagger上修改配置:

@ApiOperation(value=“动态生成下拉模板”,produces=“application/octet-stream”)

### 将 Swagger 生成的 Java 接口文档导出Excel 格式 要实现将通过 Swagger 生成的 API 文档导出Excel 文件的功能,可以按照以下方式设计解决方案: #### 设计思路 1. **获取 Swagger JSON 数据** 使用 Swagger 提供的标准接口 `/v2/api-docs` 来提取完整的 API 定义数据。这些数据通常是以 JSON 格式返回的。 2. **解析 JSON 数据并转换成表格结构** 需要编写逻辑来解析上述 JSON 数据,并将其转化为适合存储到 Excel 表格中的格式。 3. **利用 Open XML 或 Apache POI 库创建 Excel 文件** 可以选择使用 `Apache POI` 或者 `Open XML SDK` 创建 `.xlsx` 文件并将解析后的数据写入其中。 --- #### 实现代码示例 以下是基于 Spring Boot 和 Swagger 的具体实现方案: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class SwaggerToExcelExporter { public static void main(String[] args) throws IOException, InterruptedException { String swaggerUrl = "http://localhost:8080/v2/api-docs"; // 替换为实际的Swagger URL HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(swaggerUrl)) .header("Accept", "application/json") .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(response.body()); Workbook workbook = new XSSFWorkbook(); // 创建一个新的工作簿 Sheet sheet = workbook.createSheet("API Documentation"); int rowNum = 0; Row headerRow = sheet.createRow(rowNum++); writeHeader(headerRow); // 写入表头 for (JsonNode path : jsonNode.get("paths").fieldNames()) { // 遍历路径节点 for (JsonNode method : jsonNode.get("paths").get(path).fieldNames()) { // 遍历HTTP方法 Row dataRow = sheet.createRow(rowNum++); writeData(dataRow, path.asText(), method.asText(), jsonNode.get("paths").get(path).get(method).get("summary").asText()); // 填充数据 } } try (FileOutputStream outputStream = new FileOutputStream("api_documentation.xlsx")) { workbook.write(outputStream); } finally { workbook.close(); } } private static void writeHeader(Row row) { CellStyle style = row.getSheet().getWorkbook().createCellStyle(); Font font = row.getSheet().getWorkbook().createFont(); font.setBold(true); style.setFont(font); createCell(row, 0, "Path", style); createCell(row, 1, "Method", style); createCell(row, 2, "Summary", style); } private static void writeData(Row row, String path, String method, String summary) { createCell(row, 0, path); createCell(row, 1, method.toUpperCase()); createCell(row, 2, summary != null ? summary : ""); } private static void createCell(Row row, int columnCount, Object value, CellStyle style) { Cell cell = row.createCell(columnCount); if (value instanceof String) { cell.setCellValue((String) value); } else if (value instanceof Integer) { cell.setCellValue((Integer) value); } cell.setCellStyle(style); } private static void createCell(Row row, int columnCount, Object value) { createCell(row, columnCount, value, null); } } ``` --- #### 关键点解释 1. **获取 Swagger JSON 数据** - 上述代码中通过 HTTP 请求访问了默认的 Swagger JSON 路径 `/v2/api-docs`[^2]。 2. **JSON 解析与处理** - 利用了 Jackson 库 (`ObjectMapper`) 对 JSON 进行了解析和遍历操作,从而能够逐条读取 API 的定义信息。 3. **Excel 导出功能** - 使用了 Apache POI 工具包来动态构建 Excel 文件,并填充相应的字段内容(如 Path、Method 和 Summary)。最终保存文件名为 `api_documentation.xlsx`。 4. **安全性考虑** 如果项目中有启用 JWT 认证,则需要在发送请求时附加有效的 Token 头部信息以便成功拉取数据[^3]。 --- ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值