Swagger学习使用

swagger升级导致访问ui页面地址不一样

方式一

依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
 </parent>
<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>

启用Swagger2

@EnableSwagger2
@SpringBootApplication
public class AmisProjectApplication extends SpringBootServletInitializer{
   

    public static void main(String[] args) {
   
        SpringApplication.run(AmisProjectApplication.class,args);
    }

    //使用外部tomcat启动项目要重写该方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
   
        return builder.sources(AmisProjectApplication.class);
    }
}

定义Swagger配置类

package com.xysd.amisproject;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class SwaggerConfig {
   
    @Bean
    public Docket createApiDocket() {
   
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();
        tokenPar.parameterType("header")//参数类型支持header, cookie, body, query etc
                .name("access_token")//参数名
                .defaultValue("")//默认值
                .description("令牌")//描述信息
                .modelRef(new ModelRef("string"))//指定参数值的类型
                .required(false)//非必需,这里是全局配置
                .build();
        pars.add(tokenPar.build());
        //根据配置文件项 swagger是否启用,禁用
        return new Docket(DocumentationType.SWAGGER_2)
                .globalOperationParameters(pars)
                .apiInfo(apiInfo())
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xysd.amisproject"))
                .paths(PathSelectors.ant("/api/**"))
                .build().groupName("对外API接口文档");

    }

    @Bean
    public Docket create_ApiDocket() {
   
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();
        tokenPar.parameterType("header")//参数类型支持header, cookie, body, query etc
                .name("access_token")//参数名
                .defaultValue("")//默认值
                .description("令牌")//描述信息
                .modelRef(new ModelRef("string"))//指定参数值的类型
                .required(false)//非必需,这里是全局配置
                .build();
        pars.add(tokenPar.build());
        //根据配置文件项 swagger是否启用,禁用
        return new Docket(DocumentationType.SWAGGER_2)
                .globalOperationParameters(pars)
                .apiInfo(apiInfo())
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xysd.amisproject"))
                .paths(PathSelectors.ant("/_api/**"))
                .build().groupName("对内API接口文档");

    }

    private ApiInfo apiInfo() {
   
        return new ApiInfoBuilder()
                .title("AMIS-PROJECT")
                .description("AMIS-PROJECT接口文档")
                .termsOfServiceUrl("")
                .version("1.0")
                .build();
    }

}

测试

启动本地服务
访问地址
http://localhost:8000/amis-project/swagger-ui.html

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式二

依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6.RELEASE</version>
</parent>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

启用Swagger2


@EnableSwagger2
@SpringBootApplication
public class AmisProjectApplication extends SpringBootServletInitializer{
   

    public static void main(String[] args) {
   
        SpringApplication.run(AmisProjectApplication.class,args);
    }

    //使用外部tomcat启动项目要重写该方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
   
        return builder.sources(AmisProjectApplication.class);
    }
}

定义配置类

package com.xysd.bizbase.resources;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Value;
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.builders.RequestParameterBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ParameterType;
import springfox.documentation.service.RequestParameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {
   
    
    @Value("${swagger.sysName:''}")
    private String swaggerSysName;
    
    @Bean
    public Docket createApiDocket() {
   
        List<RequestParameter> pars = new ArrayList<RequestParameter>();
        RequestParameterBuilder tokenPar = new RequestParameterBuilder();
        tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc
                .name("access_token")//参数名
                .description("令牌")//描述信息
                .required(false)//非必需,这里是全局配置
                //.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填
                ;
        pars.add(tokenPar.build());
        
        return new Docket(DocumentationType.OAS_30)
                .globalRequestParameters(pars)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xysd"))
                .paths(PathSelectors.ant("/*/api/**").or(path -> path.contains("login")))
                .build()
                .groupName("对外API接口文档")
                ;
                
    }
    
    @Bean
    public Docket createRestDocket() {
   
        List<RequestParameter> pars = new ArrayList<RequestParameter>();
        RequestParameterBuilder tokenPar = new RequestParameterBuilder();
        tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc
                .name("access_token")//参数名
                .description("令牌")//描述信息
                .required(false)//非必需,这里是全局配置
                //.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填
                ;
        pars.add(tokenPar.build());
        
        return new Docket(DocumentationType.OAS_30)
                .globalRequestParameters(pars)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xysd"))
                .paths(PathSelectors.ant("/*/rest/**").or(path -> path.contains("login")))
                .build()
                .groupName("对外REST接口文档")
                ;
                
    }
    
    @Bean
    public Docket create_ApiDocket() {
   
        List<RequestParameter> pars = new ArrayList<RequestParameter>();
        RequestParameterBuilder tokenPar = null;
        
        tokenPar = new RequestParameterBuilder();
        tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc
                .name("access_token")//参数名
                .description("访问令牌")//描述信息
                .required(false)//非必需,这里是全局配置
                //.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填
                ;
        pars.add(tokenPar.build());
        
        tokenPar = new RequestParameterBuilder();
        tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc
                .name("inner_token")//参数名
                .description("内部令牌")//描述信息
                .required(false)//非必需,这里是全局配置
                //.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填
                ;
        pars.add(tokenPar.build());
        
        return new Docket(DocumentationType.OAS_30)
                .globalRequestParameters(pars)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xysd"))
                .paths(PathSelectors.ant("/*/_api/**"))
                .build()
                .groupName("对内_API接口文档")
                ;
    }
    
    private ApiInfo apiInfo() {
   
        return new ApiInfoBuilder()
                .title(swaggerSysName+"接口文档")
                .description(swaggerSysName+"接口文档")
                //.termsOfServiceUrl("")
                .version("1.0")
                .build();
    }
    
}

测试

启动服务
访问地址
http://localhost:8000/amis-project/swagger-ui/index.html

效果图

在这里插入图片描述

相关推荐

  1. Express中使用Swagger

    2024-02-01 10:00:03       66 阅读
  2. Swagger使用配置笔记

    2024-02-01 10:00:03       41 阅读
  3. SpringBoot3使用Swagger

    2024-02-01 10:00:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 10:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 10:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 10:00:03       87 阅读
  4. Python语言-面向对象

    2024-02-01 10:00:03       96 阅读

热门阅读

  1. C++ 万能函数接口

    2024-02-01 10:00:03       48 阅读
  2. 1697. 检查边长度限制的路径是否存在

    2024-02-01 10:00:03       59 阅读
  3. 算法总结归纳(第十二天)(剩余的图论)

    2024-02-01 10:00:03       59 阅读
  4. centos7 arm服务器配置深度学习环境之cuda安装

    2024-02-01 10:00:03       66 阅读
  5. 制作ubuntu-base-23.10-base-armhf的根文件系统rootfs

    2024-02-01 10:00:03       59 阅读
  6. OpenGL查询对象 Query Objects

    2024-02-01 10:00:03       38 阅读
  7. C# 泛型类型详解:编写更安全、可重用的代码

    2024-02-01 10:00:03       47 阅读
  8. 【pip安装加速】pip 更换清华源

    2024-02-01 10:00:03       52 阅读
  9. hyperf 二十四 模型缓存

    2024-02-01 10:00:03       61 阅读
  10. GO EASY 框架 之 NET 05

    2024-02-01 10:00:03       52 阅读