锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. Spring Boot 使用 Swagger3 生成 API 接口文档(1)

Spring Boot 使用 Swagger3 生成 API 接口文档(1)

0
  • 软件开发
  • 发布于 2024-08-16
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

2.9.2

io.springfox

springfox-swagger-ui

2.9.2

而在 Swagger3 中,我们不需要再引入两个不同的依赖了,我们只需要引入一个依赖就足够,具体引入的依赖如下:

io.springfox

springfox-boot-starter

3.0.0

而这部分,Swagger2 和 Swagger3 就有所不同了,Swagger2 需要添加两项不同依赖,而 Swagger3 只用添加一项依赖就可以了。

构建 Swagger 配置类

为了统一管理 Swagger,这里还是推荐给 Swagger3 添加一个配置类。当然这里也可以根据自己的需求,可要可不要,但总体来说还是建议配置。

另外,在之前集成 Swagger2 的文章中,忘记了给大家说一点。平常在工作中,Swagger 的使用仅限于在开发环境,而在生产环境中,我们是要将其移除的。这里为了灵活管理,推荐大家在项目配置文件 application.yml 中添加关于 Swagger 开关的配置,比如这里我添加的配置如下,true 则代表开启 Swagger,false 则表示关闭 Swagger。

swagger:

enabled: true

配置完成之后,我们就需要在 Swagger 配置类中获取 Swagger 开关的值了,关于具体用法就可以看下边配置代码。

package com.cunyu.springbootswagger3demo.config;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.oas.annotations.EnableOpenApi;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;

/**

  • Created with IntelliJ IDEA.

  • @author : 村雨遥

  • @version : 1.0

  • @project : springboot-swagger3-demo

  • @package : com.cunyu.springbootswagger3demo.config

  • @className : SwaggerConfig

  • @createTime : 2022/1/6 14:19

  • @email : 747731461@qq.com

  • @微信 : cunyu1024

  • @公众号 : 村雨遥

  • @网站 : https://cunyu1943.github.io

  • @description :

*/

@Configuration

@EnableOpenApi

public class SwaggerConfig {

/**

  • 用于读取配置文件 application.properties 中 swagger 属性是否开启

*/

@Value(“${swagger.enabled}”)

Boolean swaggerEnabled;

@Bean

public Docket docket() {

return new Docket(DocumentationType.OAS_30)

.apiInfo(apiInfo())

// 是否开启 swagger

.enable(swaggerEnabled)

.select()

// 过滤条件,扫描指定路径下的文件

.apis(RequestHandlerSelectors.basePackage(“com.cunyu.springbootswagger3demo.controller”))

// 指定路径处理,PathSelectors.any() 代表不过滤任何路径

//.paths(PathSelectors.any())

.build();

}

private ApiInfo apiInfo() {

/ 作者信息 /

Contact contact = new Contact(“村雨遥”, “https://cunyu1943.github.io”, “747731461@qq.com”);

return new ApiInfo(

“Spring Boot 集成 Swagger3 测试”,

“Spring Boot 集成 Swagger3 测试接口文档”,

“v1.0”,

“https://cunyu1943.github.io”,

contact,

“Apache 2.0”,

“http://www.apache.org/licenses/LICENSE-2.0”,

new ArrayList()

);

}

}

这里的配置和 Swagger2 大同小异,这里最大的区别在于加入了从配置文件中获取 Swagger 开关的属性。这里也可以选择添加到 Swagger2 的配置类中,同样通过配置文件来控制是否开启 Swagger2。此外,还有就是 DocumentationType 属性的不同了,Swagger2 中我们使用的是 SWAGGER_2,而在 Swagger3 中,我们使用的则是 OAS_30。其实点进去 DocumentationType 的源码我们就可以发现,Swagger 已经是给我们定义好的,你用的是哪一个版本的 Swagger,那我们使用的属性值应该选择对应版本。三个版本的属性值对应如下:

public static final DocumentationType SWAGGER_12 = new DocumentationType(“swagger”, “1.2”);

public static final DocumentationType SWAGGER_2 = new DocumentationType(“swagger”, “2.0”);

public static final DocumentationType OAS_30 = new DocumentationType(“openApi”, “3.0”);

编写实体类

完成上面的步骤之后,我们的 Swagger 就配置好了,接下来我们就添加一个接口来看看 Swagger3 和 Swagger2 的不同。

  1. 新建实体类

这里我以一个用户类为实例,带有 name、age 两个属性,也就是本文一开始项目结构截图中 entity 包下的内容。

package com.cunyu.springbootswagger3demo.entity;

import io.swagger.annotations.ApiModel;

import io.swagger.annotations.ApiModelProperty;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

/**

  • Created with IntelliJ IDEA.

  • @author : 村雨遥

  • @version : 1.0

  • @project : springboot-swagger3-demo

  • @package : com.cunyu.springbootswagger3demo.entity

  • @className : User

  • @createTime : 2022/1/6 11:17

  • @email : 747731461@qq.com

  • @微信 : cunyu1024

  • @公众号 : 村雨遥

  • @网站 : https://cunyu1943.github.io

  • @description :

*/

@Data

@AllArgsConstructor

@NoArgsConstructor

@ApiModel(“用户实体类”)

public class User {

@ApiModelProperty(value = “姓名”, required = true, example = “村雨遥”)

private String name;

@ApiModelProperty(value = “年龄”, required = true, example = “20”)

private Integer age;

}

  1. 新建接口

这里写了两个接口,一个是直接传参,另一种是通过利用创建的 User 实体类来传输,也就是项目结构中 controller 包中的内容。

package com.cunyu.springbootswagger3demo.controller;

import com.cunyu.springbootswagger3demo.entity.User;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import io.swagger.annotations.ApiParam;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

  • Created with IntelliJ IDEA.

  • @author : 村雨遥

  • @version : 1.0

  • @project : springboot-swagger3-demo

  • @package : com.cunyu.springbootswagger3demo.controller

  • @className : UserController

  • @createTime : 2022/1/6 11:02

  • @email : 747731461@qq.com

  • @微信 : cunyu1024

  • @公众号 : 村雨遥

  • @网站 : https://cunyu1943.github.io

  • @description :

*/

@Api(tags = “测试”)

@RestController

@RequestMapping(“/user”)

public class UserController {

@ApiOperation(“测试接口 1”)

@PostMapping(“/show1”)

public String show1(@ApiParam(value = “姓名”, required = true, example = “村雨遥”) @RequestBody String name) {

return “hello,” + name + “,welcome to springboot swagger3!”;

}

@ApiOperation(“测试接口 2”)

@PostMapping(“/show2”)

public String show2(@ApiParam(value = “用户对象”, required = true) @RequestBody User user) {

return “hello,” + user.getName() + “,welcome to springboot swagger3!”;

}

}

查看并测试接口

启动我们的项目,然后在浏览器中访问如下地址,就可以访问项目的接口文档了。

http://localhost:8080/swagger-ui/index.html

自我介绍一下,小编 13 年上海交大毕业,曾经在小公司待过,也去过华为、OPPO 等大厂,18 年进入阿里一直到现在。

深知大多数 Java 工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024 年 Java 开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合 3 年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了 95% 以上 Java 开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注 Java 获取)

面试准备 + 复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注 Java 获取)

面试准备 + 复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

[外链图片转存中…(img-ZVJ8Bkch-1713386465855)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

标签: #Spring Boot 173 #软件开发 1171 #JAVA 991
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.