Swagger使用-Spring Boot整合Swagger

简介: Swagger使用-Spring Boot整合Swagger

1 简介

网络异常,图片无法展示
|


官网:swagger.io/

  • Swagger 是一套功能强大且易于使用的 API 开发人员工具套件,适用于团队和个人,支持从设计和文档到测试和部署的整个 API 生命周期的开发。
  • Swagger 包含开源、免费和商用工具的组合,允许任何人,从技术工程师到街头智能产品经理,构建每个人都喜欢的令人惊叹的 API。
  • Swagger 由 SmartBear Software 构建,SmartBear Software 是团队软件质量工具的领导者。SmartBear 支持软件领域的一些知名人士,包括 Swagger、SoapUI 和 QAComplete。

2 Spring Boot整合Swagger

2.1 依赖和配置文件

pom.xml

<!-- web依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- swagger依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- swagger-ui依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
复制代码

application.properties

server.port=8800
复制代码

2.2 Swagger配置类

/**
 * 开启Swagger2
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
}
复制代码

测试:访问http://localhost:8800/swagger-ui.html

网络异常,图片无法展示
|


2.3 进阶整合配置一

2.3.1 新建Controller
/**
 * @desc: 控制器
 * @author: YanMingXin
 * @create: 2021/8/2-14:38
 **/
@RestController
public class StudentController {
    /**
     * Hello World
     *
     * @return
     */
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Swagger";
    }
}
复制代码
2.3.2 配置自定义Docket
/**
 * @desc: Swagger配置
 * @author: YanMingXin
 * @create: 2021/8/2-14:34
 **/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    /**
     * 配置Docket的bean
     *
     * @return
     */
    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }
    /**
     * 配置文档信息(apiInfo)
     *
     * @return
     */
    private ApiInfo apiInfo() {
        Contact contact = new Contact("Mr.YanMingXin", "https://blog.csdn.net/Mr_YanMingXin", "联系人邮箱/博客");
        /**
         * 参数1:标题
         * 参数2:描述
         * 参数3:版本
         * 参数4:组织链接
         * 参数5:联系人信息
         * 参数6:许可
         * 参数7:许可连接
         * 参数8:扩展
         */
        return new ApiInfo(
                "Spring Boot 整合 Swagger",
                "学习Swagger,Spring Boot 整合 Swagger",
                "v1.0",
                "https://blog.csdn.net/Mr_YanMingXin",
                contact,
                "Apache 2.0 许可",
                "https://blog.csdn.net/Mr_YanMingXin",
                new ArrayList<>()
        );
    }
}
复制代码
2.3.3 测试

访问http://localhost:8800/swagger-ui.html

网络异常,图片无法展示
|


2.4 进阶配置二

2.4.1 配置分组
/**
 * 创建分组
 *
 * @return
 */
@Bean
public Docket docketByGroupOne() {
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
            // 配置分组
            .groupName("GroupOne");
}
/**
 * 创建分组
 *
 * @return
 */
@Bean
public Docket docketByGroupTwo() {
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
            // 配置分组
            .groupName("GroupTwo");
}
复制代码


网络异常,图片无法展示
|


2.4.2 配置Model

Models的两种前提条件

  • @ApiModel注解
  • 在Controller的返回值中的返回类型

Student.java

/**
 * @desc: Student实体类
 * @author: YanMingXin
 * @create: 2021/8/2-14:34
 **/
@ApiModel("Student实体类")
public class Student {
    @ApiModelProperty("主键")
    public Integer sId;
    /**
     * private修饰会无效
     */
    @ApiModelProperty("姓名")
    private String sName;
    public Student(Integer sId, String sName) {
        this.sId = sId;
        this.sName = sName;
    }
}
复制代码

StudentController.java

/**
 * @desc: 控制器
 * @author: YanMingXin
 * @create: 2021/8/2-14:38
 **/
@RestController
public class StudentController {
    /**
     * Hello World
     *
     * @return
     */
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Swagger";
    }
    /**
     * 返回一个Student实体类
     *
     * @return
     */
    @RequestMapping("/student")
    public Student student() {
        return new Student(1, "zs");
    }
}
复制代码

测试:

网络异常,图片无法展示
|


2.4.3 配置扫描包
/**
 * 根据注解扫描
 *
 * @return
 */
@Bean
public Docket docketByAnnotation() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("TestStu01")
            .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
            .apis(RequestHandlerSelectors.basePackage("org.ymx.sp_swagger.controller"))
            .build();
}
复制代码

网络异常,图片无法展示
|


2.4.4 配置Swagger开关

配置分组的开关

@Bean
public Docket docketOnOrOff() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("Test02")
            //配置是否启用Swagger,如果是false,在浏览器将无法访问(只针对于Test02的分组)
            .enable(false)
            // 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
            .select()
            .apis(RequestHandlerSelectors.basePackage("org.ymx.sp_swagger.controller"))
            // 配置如何通过path过滤,即这里只扫描请求以/开头的接口
            .paths(PathSelectors.ant("/**"))
            .build();
}
复制代码

网络异常,图片无法展示
|


2.5 进阶配置三

2.5.1 配置皮肤bootstrap-ui

依赖:

<!-- 引入swagger-bootstrap-ui包 /doc.html-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.1</version>
</dependency>
复制代码

访问地址:http://localhost:8800/doc.html

2.5.2 配置皮肤Layui-ui

依赖:

<!-- 引入swagger-ui-layer包 /docs.html-->
<dependency>
    <groupId>com.github.caspar-chen</groupId>
    <artifactId>swagger-ui-layer</artifactId>
    <version>1.1.3</version>
</dependency>
复制代码

访问地址:http://localhost:8800/docs.html

2.5.3 配置皮肤mg-ui

依赖:

<!-- 引入swagger-ui-layer包 /document.html-->
<dependency>
    <groupId>com.zyplayer</groupId>
    <artifactId>swagger-mg-ui</artifactId>
    <version>1.0.6</version>
</dependency>
复制代码

访问地址:http://localhost:8800/document.html

3 常用注解

Swagger注解 简单说明
@Api(tags = “xxx模块说明”) 作用在模块类上
@ApiOperation(“xxx接口说明”) 作用在接口方法上
@ApiModel(“xxxPOJO说明”) 作用在模型类上:如VO、BO
@ApiModelProperty(value = “xxx属性说明”,hidden = true) 作用在类方法和属性上,hidden设置为true可以隐藏该属性
@ApiParam(“xxx参数说明”) 作用在参数、方法和字段上,类似@ApiModelProperty



相关文章
|
6月前
|
JSON Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
本文详细介绍了Swagger2的使用方法,包括在Spring Boot项目中的配置与应用。重点讲解了Swagger2中常用的注解,如实体类上的`@ApiModel`和`@ApiModelProperty`,Controller类上的`@Api`、`@ApiOperation`以及参数上的`@ApiParam`等。通过示例代码展示了如何为实体类和接口添加注解,并在页面上生成在线接口文档,实现接口测试。最后总结了Swagger的优势及其在项目开发中的重要性,提供了课程源代码下载链接供学习参考。
365 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
|
6月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
680 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
6月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
200 0
|
6月前
|
前端开发 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档—— Swagger 简介
第6课介绍了在Spring Boot中集成Swagger2以展示在线接口文档的方法。随着前后端分离架构的发展,API文档成为连接前端与后端开发的重要纽带。然而,代码更新频繁导致文档难以同步维护,Swagger2解决了这一问题。通过Swagger,在线API文档不仅方便了接口调用方查看和测试,还支持开发者实时测试接口数据。本文使用Swagger 2.2.2版本,讲解如何在Spring Boot项目中导入并配置Swagger2工具,从而高效管理接口文档。
210 0
|
8月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2117 17
Spring Boot 两种部署到服务器的方式
|
6月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
215 0
|
10月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
658 4
|
10月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
491 2
|
11月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
1700 1
深入实践springboot实战 蓄势待发 我不是雷锋 我是知识搬运工
springboot,说白了就是一个集合了功能的大类库,包括springMVC,spring,spring data,spring security等等,并且提供了很多和可以和其他常用框架,插件完美整合的接口(只能说是一些常用框架,基本在github上能排上名次的都有完美整合,但如果是自己写的一个框架就无法实现快速整合)。