SpringBoot与Swagger2的集成

xiaoxiao2021-02-28  32

现在测试都提倡自动化测试,那我们作为后台的开发人员,也得进步下啊,以前用postman来测试后台接口,那个麻烦啊,一个字母输错就导致测试失败,现在swagger的出现可谓是拯救了这些开发人员,便捷之处真的不是一点两点。下面我们看下如何在微服务中将springboot与swagger来结合吧。

1、swagger是什么,这个我觉得凡是一个开发人员就应该知道度娘啊,绝对强大。

简单说下,它的出现就是为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要认为的维护这个接口进行测试。

2、springboot与swagger的集成:

第一步:jar包的引入:

关于jar包的引入出现了一个问题就是版本的问题,可能需要与你的编辑器或者jdk要匹配吧,试了几个才最终成功导入jar。

第二步:swagger的配置启动类编写:

要使用swagger要进行一些配置,这个在界面的图上是可以显示的:类似于说明书:在这个类中我们会使用注解来进行启动swagger:

具体配置如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 package  com.springboot.example;         //swagger2的配置文件,在项目的启动类的同级文件建立   import  org.springframework.context.annotation.Bean; import  org.springframework.context.annotation.Configuration; import  springfox.documentation.builders.ApiInfoBuilder; import  springfox.documentation.builders.PathSelectors; import  springfox.documentation.builders.RequestHandlerSelectors; import  springfox.documentation.service.ApiInfo; import  springfox.documentation.service.Contact; import  springfox.documentation.spi.DocumentationType; import  springfox.documentation.spring.web.plugins.Docket; import  springfox.documentation.swagger2.annotations.EnableSwagger2;   @Configuration @EnableSwagger2 public  class  Swagger2 { //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等      @Bean      public  Docket createRestApi() {          return  new  Docket(DocumentationType.SWAGGER_2)                  .apiInfo(apiInfo())                  .select()                  //为当前包路径                  .apis(RequestHandlerSelectors.basePackage( "com.springboot.example.Controller" ))                  .paths(PathSelectors.any())                  .build();      }      //构建 api文档的详细信息函数,注意这里的注解引用的是哪个      private  ApiInfo apiInfo() {          return  new  ApiInfoBuilder()                  //页面标题                  .title( "Spring Boot 测试使用 Swagger2 构建RESTful API" )                  //创建人                  .contact( new  Contact( "MarryFeng" ,  "http://www.baidu.com" ,  "" ))                  //版本号                  .version( "1.0" )                  //描述                  .description( "API 描述" )                  .build();      }     }

  这里的坑是:所使用类的引入文件要注意到底是哪个,之前因为这个出错了,

1 2 @Configuration @EnableSwagger2 <br>这两个注解,一个是swagger2的配置,一个是项目启动的时候启动swagger2.<br>具体什么意思看下代码就知道了。 1 2 //为当前包路径 <span style= "color: #ff0000" >.apis(RequestHandlerSelectors.basePackage( "com.springboot.example.Controller" ))</span><br><span style= "color: #ff0000" >这个包指的是我们在哪些类中使用swagger2来测试。</span>

第三步:使用swagger来进行模拟测试:

使用swagger2来进行测试接口主要是在哪些类中使用:这里我们依然选择在controller层:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package  com.springboot.example.Controller;   import  com.springboot.example.Service.StudentService; import  com.springboot.example.entity.Student; import  io.swagger.annotations.Api; import  io.swagger.annotations.ApiImplicitParam; import  io.swagger.annotations.ApiOperation; import  org.slf4j.Logger; import  org.slf4j.LoggerFactory; import  org.springframework.beans.factory.annotation.Autowired; import  org.springframework.web.bind.annotation.PathVariable; import  org.springframework.web.bind.annotation.RequestMapping; import  org.springframework.web.bind.annotation.RequestMethod; import  org.springframework.web.bind.annotation.RestController;   /**   * Created by Administrator on 2017/9/13.   */ @RestController @RequestMapping ( "api" ) @Api ( "swaggerDemoController相关的api" ) public  class  SwaggerDemoController {      @Autowired      private  StudentService studentService;        private  static  final  Logger logger= LoggerFactory.getLogger(SwaggerDemoController. class );          @ApiOperation (value =  "根据id查询学生信息" , notes =  "查询数据库中某个的学生信息" )      @ApiImplicitParam (name =  "id" , value =  "学生ID" , paramType =  "path" , required =  true , dataType =  "Integer" )      @RequestMapping (value =  "/{id}" , method = RequestMethod.GET)      public  Student getStudent( @PathVariable  int  id) {          logger.info( "开始查询某个学生信息" );          return  studentService.selectStudentById(id);      }     }

 

上面这些可以看下具体的注解是什么意思:

这样swagger2与springboot就集成完毕了。

看下最终效果吧:

访问路径:

http://localhost:8080/swagger-ui.html

输入id后,我们可以看到查询结果:、

是不是很方便,我们不用像postman一样来编写入口,swagger2自动完成:

而且实时更新:

是不是很方便!

至此swagger2与springboot的集成完毕。

转载请注明原文地址: https://www.6miu.com/read-2624897.html

最新回复(0)