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

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

目录
相关文章
|
12月前
|
JSON Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
本文详细介绍了Swagger2的使用方法,包括在Spring Boot项目中的配置与应用。重点讲解了Swagger2中常用的注解,如实体类上的`@ApiModel`和`@ApiModelProperty`,Controller类上的`@Api`、`@ApiOperation`以及参数上的`@ApiParam`等。通过示例代码展示了如何为实体类和接口添加注解,并在页面上生成在线接口文档,实现接口测试。最后总结了Swagger的优势及其在项目开发中的重要性,提供了课程源代码下载链接供学习参考。
847 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的使用
|
12月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
1220 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
12月前
|
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`两个模块。
522 0
|
12月前
|
前端开发 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档—— Swagger 简介
第6课介绍了在Spring Boot中集成Swagger2以展示在线接口文档的方法。随着前后端分离架构的发展,API文档成为连接前端与后端开发的重要纽带。然而,代码更新频繁导致文档难以同步维护,Swagger2解决了这一问题。通过Swagger,在线API文档不仅方便了接口调用方查看和测试,还支持开发者实时测试接口数据。本文使用Swagger 2.2.2版本,讲解如何在Spring Boot项目中导入并配置Swagger2工具,从而高效管理接口文档。
406 0
|
11月前
|
JSON 监控 JavaScript
Swagger UI 本地主机教程: 如何在本地使用 Swagger UI?
Swagger UI 提供在线和离线版本,但由于各种原因,你可能需要在本地使用 Swagger UI。 在本文中,我们将向你展示如何在本地使用 Swagger UI。
|
存储 Java 数据安全/隐私保护
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
本文介绍了如何使用Flowable 7.0以下版本的flowable-ui进行流程建模、发布和执行。首先,通过解压并启动flowable-ui war包,访问http://localhost:8080/flowable-ui/idm/#/login登录系统。接着,创建并绘制一个简单的绩效流程模型,包含开始节点、任务节点(自评、上级评、隔级评)和结束节点,并为各节点分配处理人。然后,创建应用并发布绩效流程。最后,通过创建a、b、c三个用户分别完成各节点任务,演示了整个流程的执行过程。本文旨在帮助读者理解Flowable的基本操作和流程元素,后续将介绍通过Java代码控制流程的方法。
3417 1
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
1131 4
N..
|
开发框架 前端开发 UED
Bootstrap的CSS组件
Bootstrap的CSS组件
N..
286 0
|
前端开发 容器
|
前端开发 容器

热门文章

最新文章