zoukankan      html  css  js  c++  java
  • 微服务:springboot与swagger2的集成

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

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

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

    2、springboot与swagger的集成:

    第一步:jar包的引入:

    <!-- swagger2  -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>

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

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

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

    具体配置如下: 

    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层:
     

    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.cnblogs.com/fengli9998/p/7522973.html

  • 相关阅读:
    Springboot中使用ibatis输出日志
    openssl生成iis需要的pfx格式的证书
    SpringBoot 默认日志
    Spring @Value 默认值
    SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑
    geomesa hbase geoserver
    在hyper-v中安装centos后配置网络
    linux命令
    SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成ResultMap
    Java 获取指定包下的所有类
  • 原文地址:https://www.cnblogs.com/diandianquanquan/p/10607001.html
Copyright © 2011-2022 走看看