首页 > 其他分享 >springboot 引入swagger3.0 knife4j API

springboot 引入swagger3.0 knife4j API

时间:2023-09-02 11:13:22浏览次数:37  
标签:knife4j swagger return springboot swagger3.0 new import springfox documentation

1.引入依赖pom

<properties>
<swagger-version>3.0.0</swagger-version>
<swagger-knife4j>3.0.3</swagger-knife4j>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${swagger-knife4j}</version>
</dependency>

2.构建swagger配置类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.*;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Value("${swagger.enable}")
private boolean enable;

@Bean(value = "defaultApi2")
public Docket createRestApi() {
String groupName="接口平台";

Docket docket = new Docket(DocumentationType.OAS_30)
.apiInfo(creatApiInfo())
.groupName(groupName) //设置API文档的分组名称。
.enable(enable) //是否开启swagger
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) //扫描包含 @RestController 注解的方法。
.paths(PathSelectors.any()) //暴露所有接口路径。
.build()
.protocols(protocols("http","https")) // 支持的通讯协议集合
                .securitySchemes(securitySchemes()) //添加请求头和请求参数
.securityContexts(securityContexts()); //授权信息全局应用;
return docket;
}

/**
* 认证的安全上下文
* @return
*/
public List<SecurityScheme> securitySchemes(){
ArrayList<SecurityScheme> list = new ArrayList<>();
//请求的参数 Authorization:
list.add(new ApiKey("Authorization","Authorization","header"));
// apiKeyList.add(new ApiKey("x-access-token", "x-access-token", "header"));
return list;
}

public List<SecurityContext> securityContexts(){
ArrayList<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(SecurityContext.builder()
.securityReferences(securityReferences())
.forPaths(PathSelectors.any()).build());
return securityContexts;
}

public List<SecurityReference> securityReferences(){
//全局作用域
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
ArrayList<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization",authorizationScopes));
return securityReferences;
}

/**
* 支持的通讯协议集合
* @param type 类型值
* @return
*/
public Set<String> protocols(String... type){
HashSet<String> set = new HashSet<>();
for (String s : type) {
set.add(s);
}
return set;
}
/**
* 构建首页摘要
* @return
*/
public ApiInfo creatApiInfo(){
ApiInfo apiInfo = new ApiInfoBuilder()
.title("SpringBoot - knife4j API ") //标题
.description("Swagger 3.0 测试API ") //描述
.termsOfServiceUrl("http://127.0.0.1") //服务Url
.contact(new Contact("xxxxxx", "http://xxxx.com.cn/", "[email protected]")) //介绍
.version("3.0") //版本
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.build();
return apiInfo;
}

}

 




标签:knife4j,swagger,return,springboot,swagger3.0,new,import,springfox,documentation
From: https://www.cnblogs.com/wlwtop/p/17673338.html

相关文章

  • 【SpringBoot】面向切面编程AOP
    一.基本概念oop:主要以函数或者过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成,主要实现通过继承,多态和封装aop:这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。简单来讲就是方法和方法的关联,将公用代码从核心代码中抽......
  • 关于SpringBoot中引入html模板的问题的解决(基础)
    问题描述将相关的文件放置到resources/static文件夹目录下面,文件路径正确,但是一直应用不了问题解决原来是在引用的时候,需要在每个文件前面加上一个斜杠——/,这样就解决啦!......
  • 手摸手4-springboot整合redis,实现自动文档
    (目录)手摸手4-springboot整合redis,实现自动文档引入依赖<!--redis相关--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><......
  • SpringBoot 博客网站
    SpringBoot博客网站系统功能登录注册博客列表展示搜索分类个人中心文章分类管理我的文章管理发布文章开发环境和技术开发语言:Java使用框架:SpringBoot+jpa+H2SpringBoot是一个用于构建Java应用程序的开源框架,它是Spring框架的一个扩展,旨在简化和加速Spring......
  • 尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发
    简介  视频地址https://www.bilibili.com/video/BV1AP411s7D7?p=1&vd_source=0d7b1712ce42c1a2fa54bb4e1d601d78 笔记地址https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWF......
  • springboot 集成 redisson
    1.maven依赖<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.10.1</version> </dependency>2.添加配置和注入beanimportorg.redisson.Redisson;importorg.redisso......
  • spring/springboot 整合注解切换数据源
    springboot整合注解切换数据源1、SpringBoot的配置文件#数据源1spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/db1spring.datasource.druid.one.username=rootspring.datasource.druid.one.password=123456#数据源2spring.datasource.druid.two.url=j......
  • SpringBoot使用protobuf格式的接口方式
    建立SpringBoot项目,pom.xml内容如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="......
  • springboot 使用RestTemplate调用get api,传入参数
    getapi:@ResponseBody@ResponseStatus(HttpStatus.OK)@GetMapping(value="/checkGetApi")@ApiOperation(value="checkgetapimethod")publicJSONObjectcheckGetApi(IntegeruserName){JSONObjectresult=......
  • springboot整合redis,连接两个redis
    在SpringBoot中,可以使用RedisTemplate进行Redis的连接和操作。要连接多个Redis实例,你可以创建多个RedisTemplate实例,并通过配置不同的连接工厂来连接到不同的Redis实例。首先,在application.properties(或application.yml)配置文件中添加Redis连接信息:#第一个Redis......