当前位置: 首页 > news >正文

springboot2.x集成swagger api(springdoc-openapi-ui)

1、引入依赖

<properties><!-- 统一管理版本号 --><swagger-models.version>2.2.21</swagger-models.version><openapi-ui.version>1.6.14</openapi-ui.version><springdoc.version>1.6.14</springdoc.version></properties>
<dependencyManagement><dependencies><!-- 添加 springdoc 依赖 --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>${openapi-ui.version}</version> <!-- 选择与你Spring Boot版本匹配的版本 --></dependency><dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-models-jakarta</artifactId><version>${swagger-models.version}</version><scope>compile</scope></dependency><!--以下这个不知道要不要引用,如果试了不行再放开他-->
<!--<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-webmvc-ui</artifactId><version>${springdoc.version}</version></dependency>
--></dependencies></dependencyManagement>

2、编写一个SwaggerConfig的配置类

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {/** 系统基础配置 */@Autowiredprivate Config config;/*** 自定义的 OpenAPI 对象*/@Beanpublic OpenAPI customOpenApi(){return new OpenAPI().components(new Components()// 设置认证的请求头.addSecuritySchemes("apikey", securityScheme())).addSecurityItem(new SecurityRequirement().addList("apikey")).info(getApiInfo());}@Beanpublic SecurityScheme securityScheme(){return new SecurityScheme().type(SecurityScheme.Type.APIKEY).name("Authorization").in(SecurityScheme.In.HEADER).scheme("Bearer");}/*** 添加摘要信息*/public Info getApiInfo(){return new Info()// 设置标题.title("登录服务_接口文档")// 描述.description("描述:登录服务")// 作者信息.contact(new Contact().name(config.getName()))// 版本.version("版本号:" + config.getVersion());}}
package com.cosco.gzsic.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Data
@Component
@ConfigurationProperties(prefix = "biz")
public class Config {private String name;private String version;
}

3、编写接口,使用注解

import com.cosco.gzsic.config.Config;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/demo")
@Tag(name = "测试管理相关接口", description = "提供测试接口")
public class DemoController {@Autowiredprivate Config config;@Operation(summary = "提供测试信息", description = "提供参数化获取测试信息")@GetMapping("/getDemo")public String hello(@Parameter (description = "用户名",//参数描述required = true) String userName){return "hello word 9090:"+userName+"--" + config.getName() + ":" + config.getVersion();}
}

4、最后效果

http://www.dtcms.com/a/363902.html

相关文章:

  • 开源企业级快速开发平台(JeecgBoot)
  • python - ( js )object对象、json对象、字符串对象的相关方法、数组对象的相关方法、BOM对象、BOM模型中 Navigator 对象
  • 人工智能与强化学习:使用OpenAI Gym进行项目开发
  • Scikit-learn从入门到实践:Scikit-learn入门与实践
  • Scikit-learn从入门到实践:Scikit-learn入门-安装与基础操作
  • SQLynx VS DBeaver:数据库管理工具的两种思路
  • 京东科技大模型RAG岗三轮面试全复盘:从八股到开放题的通关指南
  • 通信中的双工器模型是什么?
  • 《水浒智慧》(第一部:梁山头领那些事儿)读书笔记
  • ARM编译器生成的AXF文件解析
  • 在Linux 2.4.x内核中,如何从一个page找到所有映射该页面的VMA?反向映射可以带来哪些便利?
  • Vue基础知识-localStorage 与 sessionStorage
  • Linux 文本处理三大利器:命令小工具和sed
  • leetcode-每日一题-3025. 人员站位的方案数 I-C语言
  • Web 开发 17
  • Mysql数据库基础(上)
  • MySQL-Undo Log(回滚日志)
  • 【Python3教程】Python3高级篇之多线程
  • 通用的二叉数迭代方法
  • 国内真实的交换机、路由器和分组情况
  • 容器日志加密传输在海外云服务器环境的配置标准与实施指南
  • Go结构体详解:核心概念与实战技巧
  • 计算机Python毕业设计推荐:基于Django的酒店评论文本情感分析系统【源码+文档+调试】
  • 移动端网页设计vm+rem,和px实现方式对比
  • ansible变量+管理机密
  • ansible循环+判断(with,loop,when,if,for)
  • 视觉语言模型VLM部署:基于tensorrt和tensorrt-llm的C++代码
  • 基于SpringBoot的广科大在线图书管理系统设计与实现(代码+数据库+LW)
  • Arduino Uno与4×4矩阵键盘联动完全指南
  • 百度智能云,除了AI还有啥?