Springboot基础学习之(二十一):Swagger基础学习(swagger信息介绍,配置扫描接口和开关,分组和接口注释)

什么是Swagger?

Swagger2是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful 风格的Web 服务

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。这样,如果按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。

为什么要使用Swagger?

1:Swagger可以实现注释信息的添加,帮助我们更好的了解到接口信息

2:可以实现接口文档的实时更新

3:通过Swagger接口可以实现在线测试与app postman相似

实施Swagger结构

一:创建一个springboot项目环境(web)

二:导入swagger2需要使用的依赖

    
        <dependencies>
        <!-- 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>
        <!--运行环境-->
        <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
        </dependency>

三:在配置文件对路径进行配置

Springboot2.6以后将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错


spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

Swagger页面的路径

package springfox.boot.starter.autoconfigure;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// tag::swagger-ui-configurer[]
public class SwaggerUiWebMvcConfigurer implements WebMvcConfigurer {
  private final String baseUrl;

  public SwaggerUiWebMvcConfigurer(String baseUrl) {
    this.baseUrl = baseUrl;
  }

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    String baseUrl = StringUtils.trimTrailingCharacter(this.baseUrl, '/');
    registry.
        addResourceHandler(baseUrl + "/swagger-ui/**")
        .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
        .resourceChain(false);
  }

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController(baseUrl + "/swagger-ui/")
        .setViewName("forward:" + baseUrl + "/swagger-ui/index.html");
  }
}
// end::swagger-ui-configurer[]

 

由SwaggerUiWebMvcConfigurer类可知我们要访问上图中index页面

路径为:http://localhost:8080/swagger-ui/index.html

注意:一定要查看依赖中的路径配置,因为不同版本的swagger导致index页面不一样和访问路径也可能不同

四:启动swagger:定义个类swagger_config实现swagger功能的开启

@Configuration
@EnableSwagger2
public class swagger_config {

}

 

执行项目:访问swagger后台界面

这个界面就是swagger2的后台界面,可以从这里看到关于后端配置的一些信息。以及通过此页面可以进行在线测试,测试网页的实现是否出现Bug 

配置swagger:在swagger_config类进行配置

修改这个网页上的输出内容



@Configuration
@EnableSwagger2
public class swagger_config {


    @Bean
    public Docket docket(){
        
        return new Docket(DocumentationType.SWAGGER_2).groupName("不想").apiInfo(apiInfo());


    }
    private ApiInfo apiInfo(){
        Contact contact = new Contact("不想睡醒的梦", "https://blog.csdn.net/m0_52479012?spm=1000.2115.3001.5343", "2602499389@qq.com");
        return new ApiInfo("不想睡醒的梦",
                "不想睡醒的梦",
                "不想睡醒的梦",
                "https://blog.csdn.net/m0_52479012?spm=1000.2115.3001.5343",
                contact, "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

运行项目查看网页显示的内容是否发生改变

这就是配置完成后的内容

如何查看后端的访问

创建一个controller类,定义个方法访问

@RestController
public class Mycontroller1 {

    
    @GetMapping("/")
    public String swagger(){
        return "swagger";
  
  }
}

看看在swagger页面是否显示信息

 

获取到方法如何在这个网页实现在线测试呢?

点击绿色框

点击蓝色按钮 

 

 点击Excute按钮

然后出现的内容就是这个域名访问的具体信息

 配置swagger扫描的接口以及开关

进行组的配置

在实际的开发过程中,一个swagger页面不可能只有一个人进行使用,所以要设置多个组


@Configuration
@EnableSwagger2
public class swagger_config {

    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");

    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("b");

    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("v");

    }
}

 可以在不同组进行不同的配置信息

 配置扫描接口:在docket容器中实现配置

主要的配置信息就一行代码

 

RequestHandlerSelectors配置要扫描接口的方式
basePackage设置扫描包的位置
any都进行扫描
none全都不进行扫描
.withClassAnnotation(Controller.class) 扫描类上的注解
withMethodAnnotation(GetMapping.class)扫描方法上的注解

 完整代码



@Configuration
@EnableSwagger2
public class swagger_config {

    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");

    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("b");

    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("v");

    }
    @Bean
    public Docket docket(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2).groupName("不想睡醒的梦").apiInfo(apiInfo())
//              .enable(true)    //控制swagger是否开启
                .select()
                .apis(RequestHandlerSelectors.none())
                //paths过滤ant则是指定路径进行过滤
//                .paths(PathSelectors.ant("/demo/**"))
                .build();
    }
    private ApiInfo apiInfo(){
        Contact contact = new Contact("不想睡醒的梦", "https://blog.csdn.net/m0_52479012?spm=1000.2115.3001.5343", "2602499389@qq.com");
        return new ApiInfo("不想睡醒的梦",
                "不想睡醒的梦",
                "不想睡醒的梦",
                "https://blog.csdn.net/m0_52479012?spm=1000.2115.3001.5343",
                contact, "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

接口的配置决定我们能够获取到怎么样的配置内容

当前组( 不想睡醒的梦)接口现在的配置为None

运行项目

 没有任何的信息

但当我们切换组时

 发现不同组配置不同,出现的内容不同这就是组所带来的好处

通过.enable控制swagger的开关

在v这个组关闭swagger功能

    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("v")
                .enable(false);

    }

关闭就不进行显示 

 全都关闭又是怎样的呢?

 除了开关和扫描配置还有一个关键配置:过滤

将指定文件给过滤调,不进行扫描

没有进行过滤配置之前

 配置代码:

    @Bean
    public Docket docket(Environment environment){

        return new Docket(DocumentationType.SWAGGER_2).groupName("不想睡醒的梦").apiInfo(apiInfo())

                .select()
                .apis(RequestHandlerSelectors.any())
//                paths过滤ant则是指定路径进行过滤
                .paths(PathSelectors.ant("/demo/**"))
                .build();
    }

没有扫描到能够使用的API:将内容成功过滤

如何动态配置当项目处于test、dev环境时显示swagger,处于prod时不显示? 

还是在Docket容器中进行配置(dev和test环境可以进行访问)

    @Bean
    public Docket docket(Environment environment){
        Profiles of = Profiles.of("dev", "test");
        //设置要显示的环境
        boolean b = environment.acceptsProfiles(of);
        return new Docket(DocumentationType.SWAGGER_2).groupName("不想睡醒的梦").apiInfo(apiInfo())
                .enable(b)    //控制swagger是否开启
                .select()
                .apis(RequestHandlerSelectors.any())

                .build();
    }

环境搭建

 当前环境为dev访问swagger

 访问成功

修改环境

 

 禁止访问,配置成功

配置实体类:如何被扫描到显示在swagger中

创建一个实现类

package com.swagger.demo.pojo;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel("用户参数类")          //注解:类型解释
public class user {
    @ApiModelProperty("用户名")   //未定义的属性,添加一个注解
    public String name;
    @ApiModelProperty("属性id")

    public String id;
}

创建一个接口并映射在这个实体类上

    @GetMapping("/user")
    public user swagger1(){
        return new user();
    }

注意:

注:并不是因为@ApiModel这个注解让实体显示在这里了,而是只要出现在接口方法的返回值上的实体都会显示在这里,而@ApiModel@ApiModelProperty这两个注解只是为实体添加注释的。

@ApiModel为类添加注释

@ApiModelProperty为类属性添加注释

实体类添加成功: 

 

 关于swagger常用注解

 除此只要还可以在接口中进行注解解释

    @ApiOperation("你好")    //默认注释是方法名,如果添加这个注解,进行替换
    @GetMapping("/hello")
    public String hello(@ApiParam("用户名") String name){
        return "hello"+name;
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: SpringBoot 配置Swagger 可以参考以下步骤:1. 在pom.xml中添加Swagger2依赖;2. 在SpringBoot启动类中添加@EnableSwagger2注解;3. 创建配置Swagger2;4. 在配置类中配置Swagger2信息;5. 启动SpringBoot项目,访问Swagger2页面。 ### 回答2: Spring Boot是一个基于Java的快速开发框架,可以简化Java应用的搭建和开发过程。Swagger是一个RESTful API文档生成工具,它可以通过注解来生成API文档,并且提供了一个可交互的UI界面,方便开发人员查看和测试API接口。 要在Spring Boot项目中配置Swagger,需要进行以下步骤: 1. 导入Swagger依赖:在项目的pom.xml文件中添加Swagger的依赖项,通常是通过引入`springfox-swagger2`和`springfox-swagger-ui`这两个依赖来实现。 2. 创建Swagger配置类:在项目中创建一个Swagger配置类,用于配置Swagger的相关信息接口扫描规则。可以在配置类中使用`@EnableSwagger2`注解来启用Swagger。 3. 配置Swagger的基本信息:在配置类中使用`Docket`类的实例来配置Swagger的基本信息,比如Swagger接口文档的版本、标题、描述、联系人等。可以通过`apiInfo`方法来设置这些信息。 4. 配置接口扫描规则:在配置类中使用`select`方法来设置Swagger扫描接口规则,比如指定要扫描的包路径,或者使用`RequestHandlerSelectors`类提供的方法来选择要包含的接口。 5. 配置Swagger UI界面:在配置类中使用`apis`方法来设置Swagger要显示的接口,可以选择显示所有接口,或者只显示带有特定注解的接口。可以使用`PathSelectors`类提供的方法来选择要显示的接口。 6. 启动项目并访问Swagger UI:完成上述配置后,启动Spring Boot项目,并访问Swagger UI界面,通常是通过在浏览器中访问`http://localhost:port/swagger-ui.html`来查看API文档。 以上就是在Spring Boot项目中配置Swagger的基本步骤。配置完毕后,开发人员就可以方便地查看和测试API接口,提高开发效率。 ### 回答3: Spring Boot是一个开源的Java开发框架,可以简化Spring应用程序的配置和开发过程。Swagger是一个用于构建、文档化和调试RESTful API的工具。在Spring Boot项目中配置Swagger可以使得我们更方便地管理和测试API接口。 要配置Swagger,我们需要在Spring Boot项目的pom.xml文件中添加Swagger的依赖。可以通过以下代码完成添加: ```xml <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> ``` 添加依赖后,我们需要创建一个配置类来配置Swagger。可以创建一个名为SwaggerConfig的类,并通过@Configuration注解将其标记为配置类。在SwaggerConfig类中,我们需要使用@EnableSwagger2注解启用Swagger,并创建一个Docket bean来配置Swagger的一些参数。 以下是一个示例的Swagger配置类代码: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.api")) .paths(PathSelectors.any()) .build(); } } ``` 在上述代码中,我们通过RequestHandlerSelectors.basePackage()方法指定了API接口所在的包路径,通过PathSelectors.any()方法指定了所有路径都被扫描。这样配置后,Swagger就可以扫描到我们想要展示的API接口。 最后,在启动类中添加@EnableSwagger2注解,启用Swagger。然后运行项目,访问Swagger UI界面(默认路径为:http://localhost:8080/swagger-ui.html),就可以看到API接口的文档、测试和调试信息了。 通过以上步骤,我们就成功地配置Swagger在Spring Boot项目中。使用Swagger可以方便地对API进行管理和测试,提高了开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想睡醒的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值