Spring Boot整合Swagger测试api构建全纪录

 更新时间:2019年01月13日 15:48:42   作者:SimpleWu  
这篇文章主要给大家介绍了关于Spring Boot整合Swagger测试api构建的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

什么是Swagger?

Swagger是什么:THE WORLD'S MOST POPULAR API TOOLING

根据官网的介绍:

Swagger Inspector:测试API和生成OpenAPI的开发工具。Swagger Inspector的建立是为了解决开发者的三个主要目标。

  • 执行简单的API测试
  • 生成OpenAPI文档
  • 探索新的API功能

我的理解Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案。根据我的使用,当然我只是最简单的使用,我感觉Swagger有以下几个优点:

Swagger可以整合到代码中,在开发时通过注解,编写注释,自动生成API文档。
将前端后台分开,不会有过分的依赖。

界面清晰,无论是editor的实时展示还是ui的展示都十分人性化,如果自己仅仅用markdown来编写,又要纠结该如何展现,十分痛苦。

构建项目

step1.导入依赖

 <!--swagger服务api构建个性包-->
 <dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.6.1</version>
 </dependency>
 <!--swagger ui界面-->
 <dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.6.1</version>
 </dependency>
 <!--springboot web服务-->
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <!--springboot单元测试-->
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
 </dependency>

step2.编写swagger配置类

想要使用swagger功能必须提供配置类,主要配置ui界面信息,以及配置扫描位置,swagger会根据配置的路径扫描所有的服务生成api。

其中核心RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller"),在这里配置我们的需要的扫描包位置。

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
  return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
   .select()
   .apis(RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller"))
   .paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
 return new ApiInfoBuilder()
  .title("Spring Boot中使用Swagger2构建RESTful APIs")
  .description("myapp")
  .termsOfServiceUrl("http://blog.csdn.net/SimpleWu")
  .version("1.0").build();
 }
}

step3.编写springboot启动类

@ComponentScan(basePackages={"com.simple.spring.boot.controller"}) 也是需要配置扫描路径。

@SpringBootApplication
@ComponentScan(basePackages={"com.simple.spring.boot.controller"}) 
public class SwaggerApplication {
 public static void main(String[] args) {
  SpringApplication.run(SwaggerApplication.class, args);
 }
}

step4.创建前端控制器

@RestController
@Api(tags = "swgger测试服务", description = "swgger测试服务")
@RequestMapping(value = "/simple/wu")
public class TestController {

 @ApiOperation(value="测试POST方法", notes="测试POST方法")
 @ApiImplicitParam(name = "令牌", value = "ID", required = true, dataType = "token")
 @RequestMapping(value="hello", method=RequestMethod.POST)
 public String post(@RequestBody String token) {
  books.put(book.getId(), book);
  return "success";
 }
}
  • @Api(tags = "swgger测试服务", description = "swgger测试服务") 指定某个类提供服务的名字
  • @ApiOperation(value="测试POST方法", notes="测试POST方法") 指定某个请求的名字
  • @ApiImplicitParam(name = "令牌", value = "token", required = true, dataType = "String")指定名字对应参数为令牌,以及对应参数字段token,required = true代表这个参数为必填参数,dataType 代表数据类型。

step5.启动服务

从上面的代码中我们指定请求为POST在UI界面上我们会看到一个服务名字为swgger测试服务的大类点击进去后可以看到里面所拥有的请求,如果指定这个请求的类型那么无法进行单元测试,指定后我们会看到一个请求名字叫做测试POST方法的请求并且需要填入必填参数token来完成我们的单元测试。

我们可以直接通过SwaggerApplication类来运行main方法来进行服务,端口号默认为8080.

swagger地址:http://localhost:8080/swagger-ui.html 只需要在地址后面加上swagger-ui.html即可访问

我们访问这个位置即可看到UI界面,界面简洁并且容易上手,我这边就不截图了。

step.总结

swagger官方文档:https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

swagger的一个最大的优点是能实时同步api与文档。

在项目开发过程中,发生过多次:修改代码但是没有更新文档,前端还是按照老旧的文档进行开发,在联调过程中才发现问题的情况(当然依据开闭原则,对接口的修改是不允许的,但是在项目不稳定阶段,这种情况很难避免)。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java中保证多线程间的数据共享的方法详解

    Java中保证多线程间的数据共享的方法详解

    这篇文章详解的发给大家介绍了Java中是如何保证多线程间的数据共享的,文中通过图文介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-11-11
  • Java内存溢出实现原因及解决方案

    Java内存溢出实现原因及解决方案

    这篇文章主要介绍了Java内存溢出实现原因及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 解决SpringBoot启动过后不能访问jsp页面的问题(超详细)

    解决SpringBoot启动过后不能访问jsp页面的问题(超详细)

    这篇文章主要介绍了解决SpringBoot启动过后不能访问jsp页面的问题,文中通过示例代码介绍的非常详细,有需要的朋友可以参考一下,希望对你有所帮助。
    2020-05-05
  • 一文读懂JavaWeb前后端数据交互

    一文读懂JavaWeb前后端数据交互

    本文主要介绍了一文读懂JavaWeb前后端数据交互,包括HTTP请求与响应、JSON数据格式以及常用的数据传输技术,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Mybatis常见注解有哪些(总结)

    Mybatis常见注解有哪些(总结)

    这篇文章主要介绍了Mybatis常见注解有哪些(总结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 图文示例详解Lucene数据模型查询原理

    图文示例详解Lucene数据模型查询原理

    这篇文章主要为大家通过图文示例详解Lucene数据模型查询原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • SpringBoot动态数据源连接测试的操作详解

    SpringBoot动态数据源连接测试的操作详解

    这篇文章主要介绍了SpringBoot动态数据源连接测试的操作步骤,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • SpringBoot用多线程批量导入数据库实现方法

    SpringBoot用多线程批量导入数据库实现方法

    这篇文章主要介绍了SpringBoot用多线程批量导入数据库实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • String concat(String str)使用小结

    String concat(String str)使用小结

    这篇文章主要介绍了String concat(String str)使用小结,在了解concat()之前,首先需要明确的是String的两点特殊性,一是长度不可变二是值不可变,本文给大家详细讲解,需要的朋友可以参考下
    2022-11-11
  • Spring Boot日志的打印与持久化详细解析

    Spring Boot日志的打印与持久化详细解析

    Spring Boot默认使用SLF4J+Logback 记录日志,并提供了默认配置,即使我们不进行任何额外配,也可以使用SLF4J+Logback进行日志输出
    2022-07-07

最新评论