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

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

系列文章目录

系列文章:Spring Boot 3.x 系列教程



前言

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

官方网站:springdoc.org

由于Spring Boot 3使用的是Jakarta EE 9,对应的springdoc版本需要升级到v2,目前里程碑M2版本。支持以下内容:

  • OpenAPI 3
  • Spring-boot v3 (Java 17 & Jakarta EE 9)
  • JSR-303 特别注解 @NotNull, @Min, @Max, 和 @Size.
  • Swagger-ui
  • OAuth 2
  • GraalVM native images

Swagger2已经在17年停止维护了,取而代之的是 Swagger3(基于OpenAPI 3),OpenApi是业界真正的 api 文档标准,其是由 Swagger 来维护。

这是一个基于社区的项目,不是由Spring Framework贡献者(Pivotal)维护的。


一、快速开始

为了集成spring-bootswagger-ui,将下列依赖添加到你项目即可(不需要额外的配置)。

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

这样自动将swagger-ui部署到一个spring-boot应用程序:

  1. 使用官方的swagger-ui jar,可以获得HTML格式的文档

  2. Swagger UI页面地址http://server:port/context-path/swagger-ui.htmlOpenAPI描述将在以下json格式的url上可用:http://server:port/context-path/v3/api-docs

例如:http://localhost:8080/swagger-ui.html http://localhost:8080/v3/-api-docs

  1. 文档也可以以yaml格式提供,位于以下路径:/v3/api-docs.yaml

对于HTML格式的swagger文档的自定义路径,在spring-boot配置文件中添加一个自定义springdoc属性:。
springdoc.swagger-ui.path=/swagger-ui.html

二、Springdoc-openapi模块

springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring

Spring WebMvc支持

<dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
      <version>2.0.0-M2</version>
   </dependency>

Spring WebFlux 支持

 <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
      <version>2.0.0-M2</version>
   </dependency>

三、Restful Api服务集成

本节已Spring Boot3 Restful Api服务为例集成。

1.在原有项目基础上加入 SpringDoc webmvc依赖
2.启动项目
3.访问http://localhost:8080/swagger-ui/index.html
springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring

基础配置

1.接口文档全局基础信息配置。

/**
 * spring doc配置
 */
@Configuration
public class SpringDocConfig {
    @Bean
    public OpenAPI restfulOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("Spring Boot3 Restful Zoo API")
                        .description("Zoo & Animal Detail APi")
                        .version("v0.0.1")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                        .description("SpringDoc Wiki Documentation")
                        .url("https://springdoc.org/v2"));
    }

}

2.重启项目,接口文档展示具体的描述以及开源协议和wiki地址。
springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring
3.接口描述和字段描述
默认情况下接口的功能描述和参数以及字段描述都为空,需要添加对应的注解SpringDoc才能解析:
springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring

在swagger2中SpringFox项目使用非常广泛,它也是让spring boot项目快速的集成swagger。目前此项目已经停止更新。那么他们直接注解的对应关系如下:

@Api@Tag
@ApiIgnore@Parameter(hidden = true) or @Operation(hidden = true) or @Hidden

@ApiImplicitParam@Parameter

@ApiImplicitParams@Parameters

@ApiModel@Schema

@ApiModelProperty(hidden = true)@Schema(accessMode = READ_ONLY)

@ApiModelProperty@Schema

@ApiOperation(value = "foo", notes = "bar")@Operation(summary = "foo", description = "bar")

@ApiParam@Parameter

@ApiResponse(code = 404, message = "foo")@ApiResponse(responseCode = "404", description = "foo")

下面已ZooController为例:

@Tag 描述整个Controller

@Tag(name = "ZooController", description = "动物园API")
@RestController
@RequestMapping("/zoos")
public class ZooController {}

@Operation描述具体接口信息,@Parameter描述参数信息 @ApiResponse 接口响应描述信息

  //描述具体接口信息,参数信息
    @Operation(summary = "获取动物园详情", description = "返回单个对象",
            parameters = {@Parameter(name = "id", description = "动物园id")})
    @ApiResponse(responseCode = "2xx",description = "动物园实体对象")
    @SneakyThrows
    @GetMapping(value = "/{id}")
    public ResponseEntity<ZooResponse> detail(@PathVariable("id") Integer id) {

        return ResponseEntity.ok(zooService.detail(id));
    }

@Schema 描述对象信息

@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "ZooResponse", title = "动物园对象")
public class ZooResponse implements Serializable {
    @Schema(title = "动物园id")
    private Integer id;
    @Schema(title = "动物园名称")
    private String name;
    @Schema(title = "动物园地址")
    private String address;
    @Schema(title = "动物园电话")
    private String telephone;
}

springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring

springboot3 swagger,Spring Boot 3.x教程,spring boot,restful,后端,java,spring


总结

SpringDoc集成Swagger到Spring Boot3 非常的方便,目前2者都是m2版本,等待最终GA版本。文章来源地址https://www.toymoban.com/news/detail-823361.html

到了这里,关于Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud Gateway集成SpringDoc,集中管理微服务API

    Spring Cloud Gateway集成SpringDoc,集中管理微服务API

    Spring Cloud微服务集成SpringDoc,在Spring Cloud Gateway中统一管理微服务的API,微服务上下线时自动刷新SwaggerUi中的group组。 框架 版本 Spring Boot 3.1.5 Spring Cloud 2022.0.4 Spring Cloud Alibaba 2022.0.0.0 Spring Doc 2.2.0 Nacos Server 2.2.3 公共模块里的配置是之前文章中提到的内容,加了一个webmvc和we

    2024年04月28日
    浏览(5)
  • 【Spring Boot】详解restful api

    目录 1.restful api 1.1.历史 1.2.内容 1.3.传参 2.Spring Boot中的Restful Api RESTful API(Representational State Transferful Application Programming Interface)是一种设计风格,用于构建基于网络的应用程序接口(API)。它基于一组原则和约定,旨在使不同的计算机系统能够通过 HTTP 协议相互通信和交换

    2024年02月13日
    浏览(17)
  • spring boot 集成 swagger3

    spring boot 集成 swagger3

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

    2024年02月06日
    浏览(9)
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

    @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

    问题 @Tag和@Operation标签失效 但是@Schema标签有效 pom依赖 debug排查,发现时国际化问题 解决方法:application.yml配置禁用i18n翻译

    2024年02月05日
    浏览(9)
  • Springdoc Swagger UI集成OAuth2认证

    Springdoc Swagger UI集成OAuth2认证

    之前的文章讲过OAuth2体系,以 授权码 流程为例(参见下图), 其中资源服务器(Resource Server)作为服务的提供者, 用户在客户端应用完成授权流程后,客户端应用需要 携带AccessToken请求资源服务器 , 也即是要想访问资源服务器就需要提供正确的 Authorization: Bearer AccessToke

    2024年02月02日
    浏览(7)
  • Spring Boot进阶(76):使用Spring Boot和Jersey打造高效 RESTful API

    Spring Boot进阶(76):使用Spring Boot和Jersey打造高效 RESTful API

            RESTful API已经成为了现代web应用开发中的重要组成部分,使得我们可以通过HTTP请求来访问服务器中的资源。Spring Boot和Jersey是两个非常流行的开源框架,它们可以协同工作来帮助我们打造高效的RESTful API。本篇文章将介绍如何使用Spring Boot和Jersey来创建RESTful API,并

    2024年02月08日
    浏览(8)
  • Spring Boot 3项目集成Swagger3教程

    欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。📚 🛠️ 技能清单 编程语言 :Java、C、C++、Python、Go、 前端技术 :Jquery、Vue.js、React、uni-app、Echarts UI设计 : Element-ui、Antd、Color-ui 后端技术 :Spring Boot、Mybatis-plus、Swagger 移动开发 :Android 操作系统 :

    2024年04月17日
    浏览(5)
  • Java中使用Spring Boot创建RESTful API

    在当今的Web开发中,构建RESTful API已经成为一个常见的任务。Spring Boot框架提供了一种简单、快速和高效的方式来创建和部署这样的API。本文将引导您逐步了解如何使用Spring Boot来构建和开发RESTful API。 首先,我们需要设置开发环境。确保您的系统上已经安装了以下软件: Ja

    2024年02月10日
    浏览(13)
  • Spring Boot + JWT = 安全无忧的RESTful API

    在构建现代Web应用程序时,安全性是一个不可或缺的要素。JSON Web Token(JWT)提供了一种简洁的方式来保护我们的RESTful接口。在本篇博客中,我们将一步步探索如何在Spring Boot应用中整合JWT,确保你的API安全、高效且易于管理。 JWT(JSON Web Token)是一个开放标准(RFC 7519),它

    2024年02月02日
    浏览(8)
  • Swagger UI及其集成到Spring Boot应用中

    作者:禅与计算机程序设计艺术 Swagger 是一款开源、功能丰富的 API 概述文档工具。它能够帮助我们快速、清晰地定义、结构化和展示我们的 API,同时也支持多种开发语言,如 Java、JavaScript、Python等。在 Spring Boot 中,使用 Swagger 可以极大方便 API 的测试、调试以及提供给其他

    2024年02月04日
    浏览(3)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包