SpringBoot3集成Swagger接口文档功能、接口排序以及如何设置接口页面的title/keyword/description?

news2024/11/30 12:35:48

一、SpringBoot3集成Swagger接口文档功能

        在SpringBoot3 中集成 Swagger 接口文档,如果按照网上的很多提示,会有些问题。在这个过程中我就遇到报错:

Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

        因为最新的  SpringBoot3 里javax命令空间有变化,而 Swagger 已经停更。经过调试我这边成功的配置和示例如下:

1. 引入的包为 springdoc-openapi-starter-webmvc-ui

        之前测试一些常用的 swagger-annotations

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>

2. application.yaml中的相关配置

springdoc:
  api-docs:
    path: /v3/api-docs
  swagger-ui:
    path: /swagger-ui.html
    groups-order: desc

3. Swagger3中的 SwaggerConfig 类如下

package cn.fangha.config;

import io.swagger.v3.oas.models.OpenAPI;
import org.springframework.context.annotation.Bean;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI springOpenAPI() {
        return new OpenAPI().info(
            new Info().title("信息API接口")
                    .description("本接口。。。。")
                    .version("1.0.0")
                    .summary("summary.")

        );
    }

}

4. Swagger3 中使用的注解

        Swagger2 和 Swagger3 使用注解区别很大,基本完全变了。

Swagger2                    Swagger3
@Api                            @Tag
@ApiOperation            @Operation
@ApiImplicitParams    @Parameters
@ApiImplicitParam      @Parameter
@ApiModel                  @Schema
@ApiModelProperty     @Schema
@ApiResponses          @ApiResponses
@ApiResponse            @ApiResponse
@ApiIgnore                  @Hidden

        主要使用的也就是 Tag 和 Parameter 注解。放在 controller的方法上标识接口。如下为我一个测试控制器的方法如下:

5. 业务控制器中的方法注解如下:

        此处只用于测试,接口方法均先返回的 Listmap数据。尚未使用 json 包处理。示例如下:

package cn.fangha.controller;

import cn.fangha.services.NormalService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
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.PathVariable;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
@Tag(name="API接口大全")
public class LineController {

    @Autowired
    private NormalService normalService;


    @ApiResponse(description = "线路详情")
    @Parameter(name = "keychar", description = "线路", required = true)
    @GetMapping("/detail/{keychar}")
    public Map<String, Object> gaotie_detail(@PathVariable("keychar") String keychar){

        Map<String, Object> map = normalService.get_detail(keychar);

        return map;
    }

}

二、Swagger3中的接口排序以及如何设置接口页面的title/keyword/description?

        如上,SpringBoot3 集成的 Swagger3 接口文档 实际上是用的  springdoc-openapi-starter-webmvc-ui , 网上很多集成 swagger 的多是 Springfox 的,因此没法参考使用。通过上面的这些配置处理,展示的页面效果如下:

        在使用 springdoc-openapi-starter-webmvc-ui 的时候,发现有二个问题未实现。

        一是实现的对接口的排序,在 Swagger2 里有一个 order 链式方法可以使用,但在这里我试了试,只发现在springdoc yaml 配置中有一个 writer-with-order-by-keys 。其值有 true/false/on/off ,尝试了一下都不能达到的我预期。设置为true/false 其会按字母倒序、顺序展示,但一不能实现直接按控制器中的接口方法顺序排列,也未看到哪里有自定义的顺序参数。

        二是对于接口页面 其页面的 title/description/keywords 未找到哪里可以进行设置。有些在yml配置中追加开启了 Knife4j 增强,但我对于目前的 Swagger 其它都满意,就只有这两个点没有找到方法。如果有朋友发现了这两个问题的解决方法,欢迎在评论中告诉我,感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总裁主题CeoMax-Pro主题7.6开心版

激活方式&#xff1a; 1.授权接口源码ceotheme-auth-api.zip搭建一个站点&#xff0c;绑定www.ceotheme.com域名&#xff0c;并配置任意一个域名的 SSL 证书。 2.在 hosts 中添加&#xff1a;127.0.0.1 www.ceotheme.com 3.上传class-wp-http.php到wp-includes目录&#xff…

Rust命令行,实现自动反编译Android APK包工具

Rust-CLI实现自动反编译APK Rust提供了比较好的CLI接口,可以快速的编写命令行应用, 用于日常的工具类使用。 分享一个用Rust命令行实现自动反编译Android APK包工具&#xff0c;是之前学习Rust写的一个练手小工具&#xff0c;可以快速反编译APK&#xff0c;同时也学习下用Rust…

Flutter升级与降级

升级 版本升级 // 升级到指定版本flutter upgrade 版本号// 升级到最新版本flutter upgrade 降级 1.需要先确定想要降级的版本号。 2.切换到系统安装Flutter的目录 3.在https://github.com/flutter/flutter&#xff0c;找到要回退的版本号对应的commit序号&#xff08;具…

熵与信息论

经典信息论的核心概念是香农熵。假设我们得到了一个变量X的值&#xff0c;X的香农熵量化了我们在获悉 X的值时所能得到的平均信息量&#xff1b;另一种观点是将X的看作在我们获悉的值前对其不确定程度的度量。这两种观点是互补的&#xff1b;我们既可以将看作在我们获悉X的值前…

Vue3+ts+vite自动导入vue的依赖

Vue3tsvite自动导入vue的依赖 unplugin-auto-import 主要依赖 npm i -D unplugin-auto-import// vite.config.ts import AutoImport from unplugin-auto-import/viteexport default defineConfig({plugins: [AutoImport({ imports: ["vue", "vue-router"…

研发运营一体化(DevOps)能力成熟度模型

目录 应用设计 安全风险管理 技术运 持续交付 敏捷开发管理 基于微服务的端到端持续交付流水线案例 应用设计 安全风险管理 技术运 持续交付

智慧停车场导航系统架构及反向寻车系统解决方案

一、系统概述&#xff1a; 随着当前室内定位导航技术在大型公共场所如政务中心、商业综合体、车站中的应用越来越多&#xff0c;人们对智慧停车场的需求也日益凸显出来&#xff0c;并且智慧停车场对大型公共场所智慧化的整体建设起到重要作用。如何更有效提高停车效率&#xf…

图片处理达人使用图片格式转换器一键实现批量将 JPG 图片转换成 BMP 格式并调整图片质量,解决图片批量处理难题的利器

片处理达人的秘密武器——首助编辑高手软件的图片格式转换器&#xff01;它能帮助你一键实现批量将JPG图片转换成BMP格式&#xff0c;高效解决图片批量处理难题&#xff0c;让你轻松成为图片处理高手&#xff01; 1.导入图片‌&#xff1a;在软件的图片批量处理板块中点击“添…

文本配音怎么制作?推荐6款靠谱的文本配音工具,新手不可错过

文本配音怎么制作&#xff1f;相信有很多从事自媒体行业的小伙伴们有时对视频配音这个问题感到头疼&#xff0c;还有些喜欢听有声小说的朋友们&#xff0c;都会疑惑要怎么将文案文本转换成音频呢&#xff1f;其实文本配音不难&#xff0c;小编今天给大家整理了六款靠谱的文本配…

Python: Print Table on console

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # Datetime : 2024/10/28 22:08 # User : geo…

PSINS工具箱函数介绍——inserrplot

关于工具箱 i n s e r r p l o t inserrplot in

三维模型加载慢的问题优化

业务背景 在桂林XXX人民法院项目的XX法院三维模型应用开发中用户反馈模型加载慢的问题&#xff0c;要想优化该问题主要从两方面入手 硬件升级软件优化 硬件升级 可参考高院三维模型的超高分电脑配置 处理器&#xff1a;Hygon C86 3285 8-orecprocessor 3.00GHz&#xff08…

阿里云 SAE 应用引擎可观测性最佳实践

SAE 简介 Serverless 应用引擎 SAE&#xff08;Serverless App Engine&#xff09;是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 能够让用户免运维 IaaS 和 Kubernetes&#xff0c;秒级完成从源代码、代码包、Docker 镜像部署任意语言的在线应用&#xff08;…

【面试题系列】MySQL 中 GROUP BY 和 DISTINCT 有什么区别?

在 MySQL 中&#xff0c;GROUP BY 和 DISTINCT 是两个常用的 SQL 子句&#xff0c;它们都用于处理数据的重复性&#xff0c;但在使用场景、语法、功能和性能方面存在显著差异。 本文将详细探讨这两者的区别&#xff0c;包括其语法、功能特点、使用场景及性能考虑&#xff0c;并…

Java类的static成员以及代码块(详细版)

文章目录 一、什么是static成员二、static修饰的成员有何意义三、static修饰成员变量四、static修饰成员方法4.1、静态成员变量不可以在方法内创建4.2、静态成员方法内部不可以访问非静态成员变量4.3、总结 五、static成员变量的初始化5.1、就地初始化5.2、静态代码块初始化 六…

Linux | Rsync 命令:16 个实际示例(下)

引言 Rsync&#xff08;远程同步&#xff09;是Linux/Unix系统中用于远程和本地复制及同步文件和目录的常用工具。 利用rsync命令&#xff0c;您可以轻松地在不同目录、硬盘和网络之间进行数据的远程和本地复制与同步&#xff0c;进行数据备份&#xff0c;以及在两台Linux系统间…

吃牛羊肉的季节来了,快来看看怎么陈列与销售!

一、肉品陈列基本原则 (一&#xff09;新鲜卫生 1、保证商品在正确的温度、正确的方式下陈列 (1&#xff09;正确的温度&#xff1a;冷藏柜-2℃&#xff0d;2℃&#xff1b;冷冻柜库-20℃&#xff0d;18℃ (2&#xff09;正确的方式&#xff1a; 商品不遮挡冷气出风口&…

如何用 obdiag 排查 OceanBase数据库的卡合并问题——《OceanBase诊断系列》14

1. 背景 卡合并在OceanBase中是一个复杂的问题&#xff0c;其产生可能源于多种因素。目前&#xff0c;对于卡合并的明确界定尚不存在统一标准&#xff0c;一方面&#xff0c;我们界定超过36小时未完成合并为合并超时&#xff0c;此时RS会记录ERROR日志&#xff1b;另一方面&am…

图文详解ChatGPT-o1完成论文写作的全流程

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 本月中旬OpenAI发布了OpenAI o1系列新的AI模型。 据OpenAI介绍&#xff0c;这些模型旨在花更多时间思考后再做出反应&#xff0c;就像人一样。通过训练&#xff0c;它们学会改进思维过…

外包干了7天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;22年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…