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

SpringBootWeb 篇-入门了解 Swagger 的具体使用

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 Swagger 介绍

        1.1 Swagger 和 Yapi 的使用场景

        2.0 Swagger 的使用方式

        2.1 导入 knife4j 的 maven 坐标

        2.2 在配置类中加入 knife4j 相关配置

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

        2.4 完整 Swagger 的配置代码

        3.0 Swagger 常见的注解


        1.0 Swagger 介绍

        使用 Swagger 你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。

        knife4j 是为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解决方案。Swagger 允许定义 API 的各种方面,包括输入参数、请求和响应的数据格式、接口路径等内容。同时, Swagger 提供了一个交互式的 Swagger UI ,可以直观地查看和测试 API 。

        简单来说,就是 Swagger 框架可以根据已经实现的方法或者类,通过页面的方式直观清晰的查看或者进行测试该方法。

        1.1 Swagger 和 Yapi 的使用场景

        1)Yapi 是设计阶段使用的工具,管理和维护接口。

        2)Swagger 在开发阶段使用的框架,帮助后端开发人员的接口测试。

        2.0 Swagger 的使用方式

        首先通过导入 knife4j 的 maven 坐标,再在配置类中加入 knife4j 相关配置,最后设置静态资源映射。

        2.1 导入 knife4j 的 maven 坐标

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

        2.2 在配置类中加入 knife4j 相关配置

        首先创建一个配置类,在普通类上加上 @Configuration 注解,且该类需要继承 WebMvcConfigurationSupport 类。

        再定义一个返回 Docket 的 docket 方法,且该方法需要加上 @Bean 注解,使其交给 IOC 容器管理,成为 Bean 对象。

        在该 docket 方法中先创建一个 ApiInfo 对象,通过 apiInfo 的一些方法来设置属性,再创建一个 Docket 对象,通过 docket 的一些方法来设置属性,再将设置好的 docket 对象返回。

代码如下:

    @Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("项目接口文档").version("2.0").description("项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("需要扫描的项目名")).paths(PathSelectors.any()).build();return docket;}

        其中设置 apis(RequestHandlerSelectors.basePackage("需要扫描的项目名")) 该属性是很重要的,项目中要测试的方法或者类在具体包的包名。这样就会自动扫描该包及其子包的方法或者类。

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

        重写配置类中的 addResourceHandlers 方法,通过该资源路径 "/doc.html" 来访问该页面。 

    protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}

        2.4 完整 Swagger 的配置代码


/*** 配置类,注册web层相关组件*/
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {/*** 通过knife4j生成接口文档* @return*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("项目接口文档").version("2.0").description("项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("需要测试方法所在项目的包名")).paths(PathSelectors.any()).build();return docket;}/*** 设置静态资源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}}

具体的页面效果:

        通过访问 "/doc.html" 的资源路径,就可以访问到该页面,通过该页面就可以非常方便测试这些方法了。

补充:

        若要使用 .built 来创建对象,你需要导入 Lombok 这个库的 Maven 坐标。在 Maven 项目中,你可以在 pom.xml 文件中添加以下依赖项:

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version>
</dependency>

        实际上,使用 .builder 创建对象是针对 Lombok 中的 @Builder 注解的功能。要使用 Lombok 的 @Builder 注解创建对象,你需要在你的Java类中添加 @Builder 注解,而不是导入特定的 Lombok 库的 Maven 坐标。

        3.0 Swagger 常见的注解

        通过注解可以控制生成的接口文档,使用接口文档拥有更好的可读性。简单来说,通过这些注解就可以对类、方法、方法中的属性进行说明,在测试方法的过程中,可以很清晰的明白该方法或者类的用途、信息。

常用注解如下:

        1)@Api("tags=对类的描述"):用在类上,比如 Controller ,表示对类的说明。

代码如下:

效果如下: 

        2)@ApiModel(description="对实体类进行描述"):用在实体类上,比如 entity、DTO、VO 。

代码如下:

@Data
@ApiModel(description = "员工登录时传递的数据模型")
public class EmployeeLoginDTO implements Serializable {@ApiModelProperty("用户名")private String username;@ApiModelProperty("密码")private String password;}

效果如下:
 

        3)@ApiModelProperty("对属性进行描述"):用在属性上,描述属性信息。

代码如下:

@Data
@ApiModel(description = "员工登录时传递的数据模型")
public class EmployeeLoginDTO implements Serializable {@ApiModelProperty("用户名")private String username;@ApiModelProperty("密码")private String password;}

效果如下:

        4)@ApiOperation("对方法进行描述"):用在方法上,例如 Controller 的方法,说明方法的用途、作用。

代码如下:

    @PostMapping@ApiOperation("新增员工")public Result<String> save(@RequestBody EmployeeDTO employeeDTO){log.info("新增员工");employeeService.save(employeeDTO);return Result.success();}

效果如下:

http://www.lryc.cn/news/400356.html

相关文章:

  • Python面试题:如何在 Python 中处理大数据集?
  • C++:入门基础
  • 微信小游戏 彩色试管 倒水游戏 逻辑 (二)
  • 【链表】算法题(一) ---- 力扣 / 牛客
  • Linux系统之部署盖楼小游戏
  • “金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
  • 【机器翻译】基于术语词典干预的机器翻译挑战赛
  • 推荐系统:从协同过滤到深度学习
  • 记录些Spring+题集(1)
  • SpringBoot 解决 getSession().getAttribute() 在负载均衡环境下无法获取session的问题
  • Jmeter常用组件及执行顺序
  • PTrade常见问题系列10
  • 数据结构(4.4)——求next数组
  • 《mysql篇》--JDBC编程
  • android studio 怎么下载 buildTool
  • copy 和 mutableCopy 有点乱
  • sqlalchemy通过查询参数生成query
  • 【JavaScript 算法】二分查找:快速定位目标元素
  • 论文研读:ViT-V-Net—用于无监督3D医学图像配准的Vision Transformer
  • C++入门到进阶(图文详解,持续更新中)
  • 【React Hooks原理 - useRef】
  • MVC之 IHttpModule管道模型《二》
  • 2025上海纺织助剂展会+上海织物整理剂展
  • 中科亿海微亮相慕尼黑上海电子展
  • Spring boot 2.0 升级到 3.3.1 的相关问题 (一)
  • 数据分析——Python网络爬虫(四){爬虫库的使用}
  • C++客户端Qt开发——信号和槽
  • 基于双向长短期记忆 BiLSTM 实现股票单变量时间序列预测(PyTorch版)
  • 微信小程序毕业设计-汽车维修项目管理系统项目开发实战(附源码+论文)
  • 学习大数据DAY16 PLSQL基础语法5