Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)

这篇具有很好参考价值的文章主要介绍了Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接触的原因
因开发自己的项目时,写接口文档很繁琐,查到后端都在用swagger等接口工具来记录接口文档,于是学习了一下,本文记录个人配置过程,有问题欢迎指正交流😁

Swagger: Swagger是一种Rest API的表示方式,它是标准的、语言无关的工具,这种表示方式不仅人可读,而且机器也可读。Swagger提供了一套完整的规范来描述API接口,包括请求和响应的数据模型、操作行为等。它通过注解或配置文件的方式与代码集成,以生成API文档。

SpringDoc: SpringDoc是基于OpenAPI 3规范的,专为Spring Boot设计的API文档生成工具。它提供了与Spring Boot更好的集成,支持Spring Boot全系列。SpringDoc利用JSR-303中的注解(如@NotNull、@Min、@Max、@Size等)来描述API的参数验证信息。此外,SpringDoc的接口信息可以通过JSON展示,也可以与Swagger-ui集成,提供可视化的API文档界面。

在网上看了许多教程,发现很多都是针对Spring Boot 2 框架的,即使有针对Spring Boot 3 的,用法也不太一样,经过对比测试,最后我使用的是 SpringDoc OpenAPI Starter WebMvc UI

它是 Spring Boot 项目中用于自动生成 API 文档的一个依赖库。它结合了 Swagger UI,提供了一个可视化的界面来展示和测试你的 RESTful APIs。这个依赖库特别适用于使用 Spring Web MVC 框架构建的项目。

这个依赖项包括了 Swagger UI 和 SpringDoc OpenAPI Starter WebMvc API,无需额外引入其他依赖即可使用。

pom.xml 配置

我的 spring boot 版本是 3.1.8
引入 springdoc 依赖(记得点击右上角的带蓝色的M按钮进行依赖下载)

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.8</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <!-- 其他依赖 -->

    <!-- 加入 springdoc 依赖 -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>2.5.0</version>
    </dependency>

</dependencies>

可以在pom.xml 文件引入阿里云镜像 (与 dependencies 同级!!)

<repositories>
    <!--阿里云镜像-->
    <repository>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

application.yml 配置

server:
  port: 5000

springdoc:
  api-docs:
    enabled: true # 开启OpenApi接口
    path: /v3/api-docs  # 自定义路径,默认为 "/v3/api-docs"
  swagger-ui:
    enabled: true # 开启swagger界面,依赖OpenApi,需要OpenApi同时开启
    path: /swagger-ui/index.html # 自定义路径,默认为"/swagger-ui/index.html"

如果需要更改这里的路径,切记在拦截器配置那里对应更改,后面会贴配置,但是只针对我上面这个路径,根据自己的需求改一下。

SwaggerConfig.java 配置

// 你自己的包名
package com.xxx.xxx.config;

import io.swagger.v3.oas.models.ExternalDocumentation;
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.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author HHHY
 * @ClassName
 * @Date: 2024/4/2 14:21
 * @Description: Swagger 配置
 */

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("Spring Boot 中使用 Swagger UI 构建 RESTful API")
                        .contact(new Contact())
                        .description("百草中医药信息管理平台提供的 RESTful API")
                        .version("v1.0.0")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                        .externalDocs(new ExternalDocumentation()
                        .description("外部文档")
                        .url("https://springshop.wiki.github.org/docs"));
    }
}

若你没有设置拦截器,那么到这里直接访问 http://localhost:5000/swagger-ui/swagger-ui/index.html#/ 应该就可以跑起来了,其中 localhost:端口号 是你自己在 application 里设置的。

但是 ?!!

当我满心欢喜的准备迎接属于自己的接口文档时,
springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java
springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java 蒙住了,已经搞了几个小时了…于是我遍览各位大佬的帖子,终于让我找到了蛛丝马迹,感谢这位大佬这篇文章的最后那段话给我的启发,指路——Spring Boot引入swagger-ui 后swagger-ui.html无法访问404于是我想起来自己昨天弄了一个拦截器,长这样:

package com.ykl.springboot_tcmi.config;

import com.ykl.springboot_tcmi.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author HHHY
 * @ClassName
 * @Date: 2024/4/1 23:16
 * @Description: 配置类 注册拦截器
 */

@Configuration
public class WebConfig implements WebMvcConfigurer {
    // 注入拦截器对象
    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    // 部分接口不拦截
    registry.addInterceptor(loginInterceptor)
    .excludePathPatterns("/api/users/login", "/api/users/register", "/api/rights?flag=front");
    }
}

若你发现和我一样都不能访问 json 与 ui 界面,那么在上述配置都正确的情况下,可能是你的拦截器出了问题,我是这么配置的:

// 前面都不变

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    // 部分接口不拦截
    registry.addInterceptor(loginInterceptor)
    .excludePathPatterns("/api/users/login", "/api/users/register", "/api/rights?flag=front")
    // 【看这里!!!】根据你自己的路径加上这个配置
    .excludePathPatterns("/swagger-ui/**", "/v3/api-docs/**");
    }

配置完拦截器的东西,应该就可以正常访问了!
我看到说还要配置什么静态资源访问,目前还没写到这方面内容,我也不太懂,既然能跑起来,就没加上,能跑就行,能跑就行…
前端同学开心的去写接口了(bushi😅) springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java

注意

我一开始写的路径是这样的 "/swagger-ui/index.html", "/v3/api-docs" ,然后发现可以访问到 json的数据,但是无法访问 ui 界面,又是百思不得其解,然后虽然很蠢但是真没想到是不能加上具体的index.html,但是在看别人代码的时候灵光一闪,试着改成了"/swagger-ui/**"结果能成了,但是…
springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java

是的我又傻眼了 ,因为网上版本真的很多…试了很多都不行…好不容易到这了…,也不差这会儿,容我再琢磨一波…作为一个未来合格的前端从业者(手动滑稽),我熟练的打开了 F12
springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java
果然,被我找到了吧哈哈哈哈
这里不仅只有"/v3/api-docs"发送的请求,所以"/v3/api-docs/**" 搞定!!
springdoc-openapi-starter-webmvc-ui,开发工具,spring boot,后端,java
具体使用这里就不说了,因为我也是才接触,仅仅了解就不班门弄斧了,感兴趣的同学可以去看看springdoc-openapi官网或者大佬们的文章或视频学习一下😊文章来源地址https://www.toymoban.com/news/detail-859967.html

到了这里,关于Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI

    系列文章:Spring Boot 3.x 系列教程 springdoc-openapi 帮助使用Spring Boot项目自动化API文档的生成。 springdoc-openapi 的工作原理是在运行时检查应用程序,根据Spring配置、类结构和各种注释推断 API 语义。 自动生成 JSON/YAML 和 HTML 格式的 API 文档。这个文档可以通过使用 swagger-api 注解来

    2024年01月25日
    浏览(39)
  • Springboot 2.7 集成 Swagger 增强版接口框架 Knife4j 4.3 + springdoc OpenApi 3.0

    Swagger 作为一款服务端接口文档自动生成框架,早已深入人心,并且在市场上得到了广泛的应用。然而,Swagger 3.0 也就是 OpenApi 3.0 规范发布之后便停止了更新维护,出道就是巅峰。Knife4j 作为 Swagger 的增强版,是对 Swagger UI 做了优化,同时还有很多增强的功能。伴随着 Swagge

    2024年02月08日
    浏览(35)
  • Spring Doc OpenAPI3.0 抛弃SpringFox拥抱SpringDoc

    SpringDoc是SpringBoot 的API文档工具。官网:https://springdoc.org/ 在使用SpringBoot 2.6以前去创建API文档工具一般会采用 SpringFox 提供的Swagger库,但是由于SpringBoot版本的不断升级和SpringFox摆烂不更新,导致了SpringBoot2.6之后的项目无法使用SpringFox去生成API文档,或者可以使用但是有很多

    2024年02月04日
    浏览(30)
  • 【Openapi-ui+Knife】springdoc-openapi-ui 整合 knife,多模块分组,脚手架

     pom文件: yum文件: swagger配置文件 访问swagger-ui: 访问doc.html: http://localhost:18080/doc.html

    2024年02月04日
    浏览(32)
  • springdoc-openapi-ui 整合 knife,多模块分组,脚手架

     pom文件: yum文件: swagger配置文件 访问swagger-ui: 访问doc.html: http://localhost:18080/doc.html

    2024年02月09日
    浏览(30)
  • Spring Boot3.x 使用SpringDoc生成接口文档-超级完善 + knife4jUI

    在Springfox3.0停更的两年里,SpringBoot进入3.0时代, SpringFox出现越来越多的问题,最为明显的就是解析器的问题,已经在上文 中解释清楚,这里就不再赘述。 SpringDoc是Spring官方推荐的API,相信不会轻易停更。 SpringDoc有多个版本,如果你使用的是SpringBoot3.x,请确保SpringDoc的版本

    2024年02月04日
    浏览(40)
  • Spring Boot 整合 Swagger 教程详解

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringBoot 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:Spring Boot 整

    2023年04月14日
    浏览(31)
  • spring boot 集成 swagger3

              Swagger 3是一种开源的API描述工具,它可以帮助开发人员设计、构建、文档化和测试API。Swagger 3支持多种编程语言和框架,包括Java、Node.js、Python、Ruby等,并提供了许多集成工具和插件,例如Postman、Apigee等。 Swagger 3使用OpenAPI规范来描述API,这是一种通用的API描述

    2024年02月06日
    浏览(32)
  • Spring Boot 中如何使用 Swagger

    在开发 Web 应用时,API 文档的编写和维护是一项非常重要的工作。Swagger 是一款非常流行的 API 文档工具,可以自动生成 API 文档,并提供一系列的交互式工具,如测试界面、调试界面等,方便开发者进行 API 的调试和测试。本文将介绍如何在 Spring Boot 应用中使用 Swagger。 首先

    2024年02月11日
    浏览(29)
  • Spring Boot整合Spring Fox生成Swagger文档

    Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger,并通过Swagger UI查看和测试API。它提供了一些注解,如 @Api 、 @

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包