当前位置: 首页 > news >正文

Knife4j框架的使用


Knife4j 是基于 Swagger 的增强工具,对 Swagger 进行了拓展和优化,从而有更美观的界面设计和更强的功能

引入依赖

Spring Boot 2.7.18 版本

<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>

配置Knife4j

● Knife4j 的文档(/doc.html )是通过 动态扫描你的 Spring Boot 项目中的 @RestController、@RequestMapping 等注解 自动生成的。
● 它不会额外启动一个独立的 HTTP 服务,而是 嵌入在你的 Spring Boot 应用中。因此访问 http://localhost:8080/doc.html 时,请求会被的 Spring Boot 应用处理,并返回动态生成的 HTML 页面。
● 这里 springboot 的端口是 9999,因此我们访问的默认地址是 http://localhost:9999/doc.html

application.yml 文件中配置

server:port: 9999######## knife4j的配置 默认地址: http://localhost:9999/doc.html#########
knife4j:# 开启增强配置enable: true# 开启SwaggerBasic认证功能,默认是falsebasic:enable: true# Basic认证用户名username: test# Basic认证密码password: 123

使用Knife4j

  • @Tag(name = “导出文件到网页”) 一级目录
  • @Operation(summary = “导出Excel文件到网页”) 二级目录
@Controller
@RequestMapping(value = "/test")
@Slf4j
@Tag(name = "导出文件到网页")
public class GenerateExcelToWebWithPOIController {@ResponseBody@Operation(summary = "导出Excel文件到网页")@GetMapping("/exportExcel")public void exportExcel(HttpServletResponse response, @RequestParam(value = "name") String name) throws Exception {String[] tableHeaders = {"id", "姓名", "年龄"};// 使用 XSSFWorkbook 处理 .xlsx 文件Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");CellStyle cellStyle = workbook.createCellStyle();// 创建表头Row headerRow = sheet.createRow(0);for (int i = 0; i < tableHeaders.length; i++) {Cell cell = headerRow.createCell(i);cell.setCellValue(tableHeaders[i]);cell.setCellStyle(cellStyle); // 应用样式(可选)}// 这里可以添加数据行的逻辑, 根据需要填充数据/*Row dataRow = sheet.createRow(1);dataRow.createCell(0).setCellValue(1); // iddataRow.createCell(1).setCellValue("张三"); // 姓名dataRow.createCell(2).setCellValue(25); // 年龄*/// 获取到response的输出流OutputStream outputStream = response.getOutputStream();// 重置response,以避免冲突response.reset();// 设置响应的内容类型为"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");// 设置响应头 Content-disposition 为 attachment;filename=template.xlsxresponse.setHeader("Content-disposition", "attachment;filename=template.xlsx");// 写入工作簿到响应输出流workbook.write(outputStream);outputStream.flush();outputStream.close();workbook.close(); // 关闭工作簿log.info("导出一次excel文件到桌面");}@ResponseBody@Operation(summary = "导出文本文件到网页")@GetMapping("/exportTxt")public ResponseEntity<Void> exportTxt(HttpServletResponse response, @RequestParam(value = "name") String name) throws Exception {String fileName = "导出的文本文件.txt";// 设置响应头,指定返回的是文本文件response.setContentType("text/plain; charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));// 写入文本内容到响应流PrintWriter writer = response.getWriter();try{writer.write("这是一个导出的文本");return ResponseEntity.ok().build();}catch (Exception e){log.error("导出文件失败:" + e);return ResponseEntity.internalServerError().build();}finally {writer.flush();writer.close();}}}

访问 SpringBoot 生成的文档

[http://localhost:9999/doc.html](http://localhost:9999/doc.html)

http://www.xdnf.cn/news/708031.html

相关文章:

  • WPF的布局核心:网格布局(Grid)
  • 【海康USB相机被HALCON助手连接过后,MVS显示无法连接故障。】
  • forward(转发)和redirect(重定向)
  • Spring AI(9)——MCP客户端
  • HackMyVM-Dejavu
  • Spark-Core Project
  • scp 命令
  • Unity开发之Webgl自动更新程序包
  • 4.1.1 Spark SQL概述
  • spark在执行中如何选择shuffle策略
  • Java开发经验——阿里巴巴编码规范实践解析6
  • 【Linux篇】叩响新世界的大门:线程
  • 【stm32开发板】原理图设计(电源部分)附:设计PCB流程
  • SmolVLM2: The Smollest Video Model Ever(七)
  • Kafka核心技术解析与最佳实践指南
  • BPE、WordPiece 与 Unigram:三种主流子词分词算法对比
  • 关于测试小记
  • flutter项目迁移空安全
  • ADQ36-2通道2.5G,4通道5G采样PXIE
  • 5G-A时代与p2p
  • 晶振频率稳定性:5G 基站与航天设备的核心竞争力
  • Axios 如何通过配置实现通过接口请求下载文件
  • 网络渗透基础:信息收集
  • thinkphp 5.1 部分知识记录<一>
  • t013-集团门户网站设计与实现 [基于springboot+Vue 含材料及源码]
  • 机器学习算法--随机森林
  • 13 接口自动化-框架封装之 csv 数据驱动封装和日志
  • SOC-ESP32S3部分:18-串口
  • Linux进程初识
  • 链表经典题目(力扣 easy)