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微服务集成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日
    浏览(38)
  • 【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日
    浏览(37)
  • spring boot 集成 swagger3

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

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

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

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

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

    2024年02月02日
    浏览(41)
  • 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日
    浏览(38)
  • Java中使用Spring Boot创建RESTful API

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

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

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

    2024年02月02日
    浏览(44)
  • 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日
    浏览(56)
  • Swagger UI及其集成到Spring Boot应用中

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

    2024年02月04日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包