SpringBoot-25-SpringBoot整合Swagger2以及Swagger-Bootstrap-Ui的使用

简介: 我们在之前的文章中讲过了RESTful风格设计API,没有看过的小伙伴可以查找之前的文章看一下,那么在针对这些API我们需要怎么进行测试呢?也许你会说你通过单元测试、postman、IDEA的http client

SpringBoot-25-SpringBoot整合Swagger2以及Swagger-Bootstrap-Ui的使用


我们在之前的文章中讲过了RESTful风格设计API,没有看过的小伙伴可以查找之前的文章看一下,那么在针对这些API我们需要怎么进行测试呢?也许你会说你通过单元测试、postman、IDEA的http client


等等方式吧。但是当我们要和前端开发进行交互的时候我们不仅仅需要自己测试通过,同时还需要给前端工程师这个API接口的开发文档,以及每次测试修改接口后,要对文档进行维护,这就增加了我们


程序开发的成本,并且经常文档维护维护就中断了,那么它就失去了参考价值,变得没有意义。Swagger的出现就是为了解决这些痛点的。个人认为Swagger有以下优点:


Swagger提供了API接口文档,并且将代码维护和文档修改融为一体,减少创建文档的麻烦


Swagger提供了前端界面用来测试每一个API接口


跨语言,支持多国语言


那么现在我们开始进行Swagger的代码之旅吧


c32fe1e11b6547a58cfedfa91b996c6b.png



引入Swagger的依赖

   <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>



创建Swagger配置类

创建一个swagger的config配置代码如下:

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(true)
                .apiInfo(apiInfo())
                .select()
                // 扫描需要生成API文档的controller所在的包路径
                .apis(RequestHandlerSelectors.basePackage("com.learn.springboot.controller"))
                //为有@Api注解的Controller生成API文档
//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                //为有@ApiOperation注解的方法生成API文档
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot 2.x集成Swagger")
                .description("测试 API 1.0 操作文档")
                .termsOfServiceUrl("test")
                .version("1.0")
                .contact(new Contact("springboot葵花宝典", "", "test@gmail.com"))
                .build();
    }
}


  • @Configuration:声明Swagger2Config为配置类
  • @EnableSwagger2:声明配置Swagger配置



配置Swagger的测试API

经过上面的操作后,Swagger页面以及可以看到基本信息了,但是我们还没有添加相关的API信息,现在我们就添加相关的API操作,代码如下:

Student实体类

@Data
@ApiModel(value = "学生实体类",description = "学生信息用作增删改查")
@JsonPropertyOrder(value={"name","mobile","sex"})
public class Student implements Serializable{
    @ApiModelProperty(value = "学生ID", name = "id", required = false, example = "0")
    @JsonIgnore
    private Long id;
    @ApiModelProperty(value = "学生电话", name = "mobile", required = true,example = "133333")
    private String mobile;
    @ApiModelProperty(value = "学生性别", name = "性别", required = true,example = "男")
    @JsonProperty("性别")
    private String sex;
    @ApiModelProperty(value = "学生姓名", name = "name", required = true,example = "张三")
    private String name;
    @ApiModelProperty(value = "学生年龄", name = "age", required = true,example = "20")
    private int age;
    @ApiModelProperty(value = "邮箱", name = "email", required = true,example = "133@qq.com")
    @JsonProperty("邮箱")
    private String email;
    @ApiModelProperty(value = "是否可用1可用,0不不用", name = "isEnabled", required = false,example = "1")
    private int isEnabled;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createDate;
    private Date updateDate;
}



注解

  • ApiModel:作用在实体类上,表示响应数据
  • @ApiModelProperty:实体类属性的描述


添加Controller

@Api(value = "测试Swagger",tags = "测试")
@RestController
@RequestMapping("/test")
public class TestController {
    /**
     *测试
     */
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "name", required = false, paramType = "path",dataType = "String",
                    example = "张三"),
    })
    @ApiOperation(value = "测试",tags = "测试",notes = "测试swagger")
    @GetMapping("/{name}")
    public String test(@PathVariable("name")String name) {
        return "Hello :" +name;
    }
    /**
     *测试student
     */
    @ApiOperation(value = "测试student",tags = "测试student",notes = "测试student")
    @PostMapping("/student")
    public Student testStudent(@RequestBody Student student) {
        return  student;
    }
}


注解

  • @Api:作用在Controller类上,value的值默认不显示tag属性为具体描述
  • @ApiOperation:作用在Controller类的方法上
  • @ApiImplicitParams:方法中参数的说明


value:参数的说明


paramType:参数输出的位置,header(请求参数的获取:@RequestHeader)、query(请求参数的获取:@RequestParam)、path(请求参数的获取:@PathVariable)


dataType:参数类型


example:参数示例


required:参数是否必须


测试

启动项目,然后输入:

http://localhost:8080/swagger-ui.html进行测试。其整体展示效果如下:



1fd4d99ee50746c0b1ed8b77e28021a0.png


使用Swagger进行测试

我们对测试方法接口将那些测试,点击Try it out


1adf92c64c574dc8987c9d2c42290284.png



进入参数页面


69ee708840be4000b36523e815eee626.png


输入name,点击execute,就完成了接口的请求了。


整合swagger-bootstrap-ui



swagger默认的api接口是上下结构,在浏览器中显示不符合我们开发系统的左右菜单风格,swagger-bootstrap-ui就是一套基于左右菜单风格,只需要在pom.xml中添加依赖即可。

 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.21</version>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>


修改过依赖以后访问Swagger API文档

访问swagger-bootstrap-ui文档

  • swagger文档地址:http://localhost:8080/doc.html
  • swagger效果展示



实体类展示


56165e75781541d38d294c5fcb979868.png


方法展示


807c9d9de37e47a7a5e8d3185ba70326.png

如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!

目录
相关文章
|
23天前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
34 4
|
1月前
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
119 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
73 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
191 1
|
3月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
|
3月前
|
Java Spring
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
本文介绍了如何在Spring Boot项目中集成Swagger 2.x和3.0版本,并提供了解决Swagger在Spring Boot中启动失败问题“Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerEx”的方法,包括配置yml文件和Spring Boot版本的降级。
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
|
4月前
|
Java API Spring
springboot集成swagger
这篇文章介绍了如何在Spring Boot项目中集成Swagger 2.10.0来生成API文档,包括添加依赖、编写配置类、创建接口文档,并使用Knife4j美化Swagger界面。
|
4月前
|
前端开发 Java Spring
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
这篇文章展示了一个使用Spring Boot、Thymeleaf和Bootstrap框架开发的简洁、响应式的商城管理页面,包括美食介绍、产品详情、购物车等功能,适合初学者学习和使用。
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
177 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
115 62
下一篇
DataWorks