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

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

目录
相关文章
|
2月前
|
SQL 前端开发 Java
springboot+bootstrap实现图书商城管理(大三下学期课程设计)
这篇文章是作者在CSDN上记录的自己的课程设计过程,详细描述了使用Spring Boot和Bootstrap框架实现的图书商城管理项目,包括了顾客端和商家端的功能要求、技术参数、设计要求、运行环境、技术要求以及开发过程中遇到的一些问题和解决办法。
springboot+bootstrap实现图书商城管理(大三下学期课程设计)
|
3月前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
9天前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
|
8天前
|
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‘问题的解决
|
2月前
|
Java API Spring
springboot集成swagger
这篇文章介绍了如何在Spring Boot项目中集成Swagger 2.10.0来生成API文档,包括添加依赖、编写配置类、创建接口文档,并使用Knife4j美化Swagger界面。
|
2月前
|
前端开发 Java Spring
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
这篇文章展示了一个使用Spring Boot、Thymeleaf和Bootstrap框架开发的简洁、响应式的商城管理页面,包括美食介绍、产品详情、购物车等功能,适合初学者学习和使用。
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
|
3月前
|
JSON 缓存 Java
Spring Boot集成 Swagger2 展现在线接口文档
本节课详细分析了 Swagger 的优点,以及 Spring Boot 如何集成 Swagger2,包括配置,相关注解的讲解,涉及到了实体类和接口类,以及如何使用。最后通过页面测试,体验了 Swagger 的强大之处,基本上是每个项目组中必备的工具之一,所以要掌握该工具的使用,也不难。
|
2月前
|
Java
SpringBoot 配置 Swagger
SpringBoot 配置 Swagger
29 0
N..
|
5月前
|
开发框架 前端开发 UED
Bootstrap的CSS组件
Bootstrap的CSS组件
N..
50 0
|
12月前
|
前端开发 容器
下一篇
无影云桌面