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

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.lryc.cn/news/2391745.html

相关文章:

  • 深兰科技陈海波率队考察南京,加速AI医诊大模型区域落地应用
  • 【芯片设计中的交通网络革命:Crossbar与NoC架构的博弈C架构的博弈】
  • deepseek告诉您http与https有何区别?
  • mac将自己网络暴露到公网
  • 考研政治资料分享 百度网盘
  • 拓扑排序算法剖析与py/cpp/Java语言实现
  • 罗马-华为
  • 单例模式的隐秘危机
  • 微信小程序常用方法
  • 切片器导航-大量报告页查看的更好方式
  • 火山引擎声音复刻
  • 【数据分析】Pandas
  • 【ROS2】Qt Debug日志重定向到ROS2日志管理系统中
  • 经典SQL查询问题的练习第一天
  • ubuntu 22.04安装k8s高可用集群
  • 使用java实现word转pdf,html以及rtf转word,pdf,html
  • 使用LSTM进行时间序列分析
  • 【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题
  • k8s中kubeSphere的安装使用+阿里云私有镜像仓库配置完整步骤
  • Agilent安捷伦Cary3500 UV vis光谱仪Cary60分光光度计Cary1003004000500060007000 UV visible
  • JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案
  • arcgis js 4.x 的geometryEngine计算距离、面积、缓冲区等报错、失败
  • vSphere 7.0 client 提示HTTP状态 500- 内部服务器错误
  • 用 Python 打造你的专属虚拟试衣间!——AI+AR 如何改变时尚体验
  • Java与Flutter集成开发跨平台应用:从核心概念到生产实践
  • SpringAI 大模型应用开发篇-纯 Prompt 开发(舔狗模拟器)、Function Calling(智能客服)、RAG (知识库 ChatPDF)
  • 微信小程序的软件测试用例编写指南及示例--性能测试用例
  • Unsupervised Learning-Word Embedding
  • 远控安全进阶之战:TeamViewer/ToDesk/向日葵设备安全策略对比
  • 变量的计算