Swagger的使用

学习springboot整合swagger当中的总结以及些许错误经历

刚看完网课,现在记录下学习swagger的笔记,swagger听说现在是很多大公司都在用的,他是一款前后端交互过程中相互交流的语言,也就是说在项目启动的时候(我一般都是测试springboot项目),可以通过是否开启了swagger-ui.html的权限,如果开启了,就可以通过这个html页面去测试,如果关闭了,就是发布项目之后,其他人是看不到我们的接口的。

以下是学习笔记的记录

  • 首先是导包

<!--swagger-->
       <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger2</artifactId>
           <version>3.0.0</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger-ui</artifactId>
           <version>3.0.0</version>
       </dependency>

要学会用最新版的,出现了问题才好学习,当时maven库最新版的,直接挪过来,当时跟着网课写的时候,他用的是2.9.2版本,springboot2.1.7.RElEASE,我用的是springboot2.6.7,上面两个依赖3.0.0,官网最新版。

下面这个是springboot2.1.7.RElEASE + swagger3.0.0的,出现了启动报错

在这里插入图片描述
下面这个是springboot2.6.7 + swagger3.0.0的,能启动,但是出现了加载swagger-ui.html报错
在这里插入图片描述
最后改成springboot2.6.7 + swagger2.9.2
在这里插入图片描述
显然,启动的效果,swagger启动了

在这里插入图片描述
初次启动的效果是这样的

导入了包就要配置swagger,所以要有个SwaggerConfig类

当然,没有配置就会像上面初次启动一样,而配置类中,就是修改一些初次加载页面的内容,我的配置类中的代码

1. 这里是识别application.properties中spring.profiles.active=dev选择的是dev环境还是pro环境,我这dev是测试环境,pro是等放到服务器启动的时候需要选择的环境,具体看公司规范吧

// 设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","pro");
        // 通过environment.acceptProfiles()判断是否处在自己设定的环境当中
        
        boolean flag = environment.acceptsProfiles(profiles);

在这里插入图片描述

2.配置最初页面的一些信息


    // 配置了swagger的docket的bean实例
    @Bean
    public Docket docket(Environment environment){

        // 设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","pro");
        // 通过environment.acceptProfiles()判断是否处在自己设定的环境当中
        boolean flag = environment.acceptsProfiles(profiles);


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiInfo())
                .groupName("测试组别4")
                // 是否启动swagger
                .enable(flag)
                .select()
                // RequestHandlerSelectors() 配置扫描接口的方式
                // basePackage() 配置要扫描的包
                // any() 全部扫描
                // none() 不扫描
                // withClassAnnotation() 扫描类上的注解
                // withMethodAnnotation() 扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.luo.controller"))//我这里是选择扫描我所有controller包下所有的类

                // path() 过滤
                //.paths(PathSelectors.ant("/luo/**"))

                .build();
    }
    public ApiInfo getApiInfo(){
        return new ApiInfo(
                "罗某的测试",
                "学习swagger",
                "1.0",
                "urn:tos",
                new Contact("罗某", "www.baidu.com", "2369303335@qq.com"),//作者的个人信息
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

在这里插入图片描述
3.读取controller包下的类,我这只写了一个类
在这里插入图片描述

swagger在controller或者实体类中可以添加一些注释或者其他的

最后的代码成功,swaggerConfig.java

package com.luo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.RequestHandler;
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;

import javax.sql.rowset.Predicate;
import java.util.ArrayList;

@Configuration
@EnableSwagger2 // 开启swagger
public class SwaggerConfig {

    // 配置了swagger的docket的bean实例
    @Bean
    public Docket docket2(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("测试组别1");
    }
    // 配置了swagger的docket的bean实例
    @Bean
    public Docket docket3(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("测试组别2");
    }

    // 配置了swagger的docket的bean实例
    @Bean
    public Docket docket4(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("测试组别3");
    }


    // 配置了swagger的docket的bean实例
    @Bean
    public Docket docket(Environment environment){

        // 设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","pro");
        // 通过environment.acceptProfiles()判断是否处在自己设定的环境当中
        boolean flag = environment.acceptsProfiles(profiles);


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiInfo())

                .groupName("测试组别4")

                // 是否启动swagger
                .enable(flag)

                .select()

                // RequestHandlerSelectors() 配置扫描接口的方式
                // basePackage() 配置要扫描的包
                // any() 全部扫描
                // none() 不扫描
                // withClassAnnotation() 扫描类上的注解
                // withMethodAnnotation() 扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.luo.controller"))

                // path() 过滤
                //.paths(PathSelectors.ant("/luo/**"))

                .build();
    }

    public ApiInfo getApiInfo(){
        return new ApiInfo(
                "罗某的测试",
                "学习swagger",
                "1.0",
                "urn:tos",
                new Contact("罗某", "www.baidu.com", "2369303335@qq.com"),//作者的个人信息
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }



}

总结:我总结下这个于postmen的区别,这个我感觉有个问题,就是不能保存测试结果,postmen可以保存,测试方法和postmen大有雷同(好像有这个词词语,就是使用方式和postment基本一样)
最后,再给大家推荐一个测试的软件在这里插入图片描述
postmen还有这个都用过,eolink和postmen的区别就是,eolink是国产软件,然后这个就是可以在里面测试,前端可以看到后端测试的结果,就是能够保存测试的结果,不用每次都启动项目,然后测试接口。postmen也有这个功能,但是总的支持一下国产吧。哈哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值