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

SpringBoot配置Swagger

目录

  • 一、Swagger介绍
    • 1、什么是Swagger
    • 2、为什么使用 Swagger?
  • 二、Swagger常用注解
    • 1、@Api
    • 2、@ApiModel
    • 3、@ApiModelProperty
    • 4、@ApiOperation
  • 三、SpringBoot中配置Swagge
    • 1、引入依赖
    • 2、使用方式
  • 四、验证Swagger配置

一、Swagger介绍

1、什么是Swagger

定义
OpenAPI 规范:描述 RESTful API 的标准格式(JSON/YAML)
Swagger 工具集:围绕 OpenAPI 规范构建的工具集合

2、为什么使用 Swagger?

优势
标准化文档 - 统一的 API 描述格式
交互式测试 - 直接在浏览器测试 API
前后端协作 - 基于文档先行开发
代码自动生成 - 减少手写代码
API 管理 - 版本控制、权限管理

二、Swagger常用注解

通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:

1、@Api

@Api用在类上,例如Controller,表示对类的说明

@Api(tags="员工管理")@RestController@RequestMapping("/admin/employee")@Slf4jpublicclassEmployeeController{

2、@ApiModel

@ApiModel用在类上,例如entity、DTO、VO,配合@APIModelProperty使用

@Data@Builder@NoArgsConstructor@AllArgsConstructor@ApiModel("员工信息")publicclassEmployeeimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@ApiModelProperty("员工id")privateLongid;@ApiModelProperty("用户名")privateStringusername;privateStringname;privateStringpassword;privateStringphone;privateStringsex;privateStringidNumber;privateIntegerstatus;// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")privateLocalDateTimecreateTime;// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")privateLocalDateTimeupdateTime;privateLongcreateUser;privateLongupdateUser;}

3、@ApiModelProperty

@ApiModelProperty用在属性上,描述属性信息

@Data@Builder@NoArgsConstructor@AllArgsConstructor@ApiModel("员工信息")publicclassEmployeeimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@ApiModelProperty("员工id")privateLongid;@ApiModelProperty("用户名")privateStringusername;privateStringname;privateStringpassword;privateStringphone;privateStringsex;privateStringidNumber;privateIntegerstatus;// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")privateLocalDateTimecreateTime;// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")privateLocalDateTimeupdateTime;privateLongcreateUser;privateLongupdateUser;}

4、@ApiOperation

@ApiOperation用在方法上,例如Controller的方法,说明方法的用途、作用

@PostMapping("/login") @ApiOperation("员工登录") public Result<EmployeeLoginVO>login(@RequestBody EmployeeLoginDTO employeeLoginDTO) { log.info("员工登录:{}", employeeLoginDTO); Employee employee = employeeService.login(employeeLoginDTO); //登录成功后,生成jwt令牌 Map<String,Object>claims = new HashMap<>(); claims.put(JwtClaimsConstant.EMP_ID, employee.getId()); String token = JwtUtil.createJWT( jwtProperties.getAdminSecretKey(), jwtProperties.getAdminTtl(), claims); EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder() .id(employee.getId()) .userName(employee.getUsername()) .name(employee.getName()) .token(token) .build(); return Result.success(employeeLoginVO); }

三、SpringBoot中配置Swagge

rKnife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

1、引入依赖

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

2、使用方式

1、导入 knife4j 的maven坐标

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

2、在配置类中加入 knife4j 相关配置

@Configuration@Slf4jpublicclassWebMvcConfigurationextendsWebMvcConfigurationSupport{/** * 通过knife4j生成接口文档 * @return */@BeanpublicDocketdocket(){ApiInfoapiInfo=newApiInfoBuilder().title("项目接口文档").version("2.0").description("苍穹外卖项目接口文档介绍").build();Docketdocket=newDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();returndocket;}

3、设置静态资源映射,否则接口文档页面无法访问

protectedvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}

接口文档访问路径为http://ip:port/doc.html

四、验证Swagger配置


title(“项目接口文档”)对应

description(“苍穹外卖项目接口文档介绍”)对应



接口口调试方法:

http://www.cnnetsun.cn/news/49136.html

相关文章:

  • Step-Audio 2:颠覆性多模态音频AI如何重新定义人机交互?
  • 3步掌握OpenUSD在Blender中的高效应用方法
  • HeyGem.ai视频生成超时终极解决方案:从卡顿到流畅的完整优化指南
  • AI智能体测试终极指南:构建可靠质量保障体系
  • 通信基站抛物面天线检测--基于RPN与FPN的改进算法实现
  • CosyVoice ONNX模型部署终极指南:5大实战技巧快速掌握
  • 字节跳动开源Bamboo-mixer:AI驱动电解液研发革命,周期缩短60%
  • 后端学习笔记
  • Gitea权限管理:构建安全高效的代码访问控制体系
  • AI视频生成终极指南:从零开始快速上手WAN2.2-14B-Rapid-AllInOne
  • Ascend C 编译器内幕与自动调优实战:从手写 Kernel 到 AI 驱动的性能优化
  • Ascend C 绿色计算与边缘部署:面向低碳 AI 的极致能效优化实践
  • Step-Audio 2系列深度实战指南:多模态音频理解的技术突破与应用全景
  • 量子计算终极指南:如何用Qiskit快速掌握量子编程的完整教程
  • React-chartjs-2 实战深度突破:从数据混沌到可视化洞察的架构思维
  • 22、LTSP 环境搭建与 Ubuntu 服务器安全指南
  • 23、Linux系统安全管理:sudo、AppArmor与SSH的深度解析
  • 智能中文对话系统完整构建指南:从零到一的5个关键步骤
  • Java泛型实战:类型安全与高效开发
  • 无需函数,教你快速分离Excel单元格中的文本和数字
  • 学术探索新航标:书匠策AI解锁毕业论文写作的“隐形导航仪”
  • 告别论文“缝合怪”:解锁书匠策AI,把信息碎片织成你的知识图谱
  • 学术迷航中的智能灯塔:书匠策AI如何重构毕业论文写作生态
  • 别再死磕论文了!你的毕业论文需要一个“科研副驾”
  • 当你的学术世界支离破碎,我借AI之手为它重绘版图
  • 论文焦虑终结者?揭秘「书匠策AI」如何用算法重构你的学术写作体验
  • 职场进阶:如何全面提升面试表现力?
  • 律师咨询|基于springboot + vue律师咨询系统(源码+数据库+文档)
  • Agent 通过Langchain实现网页检索功能
  • 终极指南:5分钟快速搭建个人作品集网站的完整解决方案