springboot配置Swagger3.0

news2025/1/12 4:02:28

springboot配置Swagger3.0

1、pom加入依赖

我们创建一个SpringBoot项目,引入 swagger3 依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2、启动类上加入注解

在启动类上加入两个注解,即可开启 swagger3

@SpringBootApplication
@EnableSwagger2
@EnableOpenApi
public class NacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosApplication.class, args);
        System.out.println("我是 nacos 微服务");
    }
}

对于swagger,简单的配置就可以看到页面了,我们我输入 localhost:8080/swagger-ui/index.html

3、创建Swagger配置类

对于swagger,我们可以对 index.html 页面做一些配置,比如邮箱、姓名、git地址等。

@Configuration
public class SwaggerConfiguration {

    @Bean
    Docket docket() {
        return new Docket(DocumentationType.OAS_30)
                // 配置网站基本信息
                .apiInfo(new ApiInfoBuilder()
                        .title("nacos微服务接口文档")
                        .version("v1.0")
                        .description("在线nacos微服务接口文档")
                        .contact(new Contact("choleen", "https://choleen95.github.io/",
                                ""))
                        .build())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.nacos.controller"))
                .build();

    }

}

目前,对于请求,我们配置了对于controller包下的所有类的接口,都展示在上面。

4、创建接口-三种

目前创建三种接口,一种是form表单传值,一种是路径传参,一种是实体传参

@Api("查询演出接口")
@RequestMapping("/hello/")
@RestController
public class HelloController {

    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
    @Resource(name = "activityMapper")
    ActivityMapper activityMapper;

    @ApiOperation("根据场地城市及Id查询演出表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "venueCity", value = "场地城市"),
            @ApiImplicitParam(name = "id", value = "id")
    })
    @GetMapping("activity")
    public ResponseHelper sayHello(String venueCity, @RequestParam(required = true) String id) {
        List<Activity> list = activityMapper.queryEntityList(venueCity, id);
        return ResponseHelper.build(200, list);
    }

    @ApiOperation("根据id查询演出")
    @ApiImplicitParam(name = "id", value = "id")
    @GetMapping("{id}")
    public ResponseHelper queryInfo(@PathVariable(value = "id")Long id) {
        Activity activity = activityMapper.selectById(id);
        return ResponseHelper.build(200, activity);
    }

    @ApiOperation("分页查询演出")
    @ApiImplicitParam(name = "activity", value = "演出实体")
    @GetMapping("queryByPage")
    public ResponseHelper queryByActivity(@RequestBody Activity activity) {
        QueryWrapper<Activity> wrapper = new QueryWrapper<>();
        wrapper.eq("venue_city",activity.getVenueCity()).eq("id",activity.getId());
        PageDTO<Activity> page = new PageDTO<>(1,10);
        PageDTO<Activity> page1 = activityMapper.selectPage(page, wrapper);
        return ResponseHelper.build(200, page1);
    }

}

这里有几个参数需要介绍一下。

  • @Api 在类上,标明此Controller的用处、
  • @ApiOperation 表明此接口的用处
  • @ApiImplicitParam 请求一个入参的说明,有name、value、defaultValue等属性
  • @ApiImplicitParams 若有多个入参,此是一个数组,把多个ApiImplicitParam放进去即可
  • @RequestParam(required=true) 和 @ApiImplicitParam中的必填不同,一个是开发者指定参数必传,一个是swagger调用时必填,但对后台无影响。
  • 若入参是一个实体,比如第三个分页查询 ,可以在实体中也注入 swagger 注解,在前端页面也可让开发者了解参数结构
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "activity", description = "演出表")
@TableName("activity")
public class Activity implements Serializable {

    private static final long serialVersionUID = -3563130625676560116L;
    @ApiModelProperty(value = "主键ID")
    private Long id;
    @ApiModelProperty(value = "演出名称")
    private String name;
    @ApiModelProperty(value = "演出起始时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date showStartTime;
    @ApiModelProperty(value = "演出结束时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date showEndTime;
    @ApiModelProperty(value = "场地城市")
    private String venueCity;
    @ApiModelProperty(value = "场地名称")
    private String venueName;
    @ApiModelProperty(value = "场地地址")
  • @ApiModel 是描述此类的信息
  • @ApiModelProperty 是描述字段的信息

5、swagger调试

接口编写好了,我们可以去 localhost:8080/swagger-ui/index.html 页面上去调试。

在这里插入图片描述

点击 try it 然后再填入参数,点击 Excute ,即可再返回中看到结果。

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

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

相关文章

任正非:ChatGPT对我们的机会是什么,内部讲话实录!

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 我新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 为感谢全国火花奖获奖者对于产业界及科学界做出的重大贡献&#xff0c;华为组织了与部分获奖老师与专家的座谈会。座谈会上&…

LeetCode.46. 全排列(回溯法入门)

写在前面&#xff1a; 题目链接&#xff1a;LeetCode.46. 全排列 编程语言&#xff1a;C 题目难度&#xff1a;中等 一、题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a…

【震撼GPT-4崛起!年薪60万工作被GPT-4取代,成本仅2千多,引发轰动!】

目录 福利&#xff1a;文末纯分享中文版CHAT GPT镜像&#xff0c;不存在魔法&#xff0c;纯分享免费使用 一、前言 1、GPT-4的表现&#xff0c;与一位6年工作经验的人类相当 2、GPT-4完成所有类型的任务都要比人类快得多&#xff01; 二、GPT-4当数据分析师&#xff0c;都…

聊一聊影响LCD屏背光效率的几个重要因素

前阶段&#xff0c;小白的一个朋友参加了一个面试。面试完和小白说到其技术面过程惨不忍睹。被提及原因时&#xff0c;主要还是因为面试者提出的问题&#xff0c;小白的朋友答复的可能不是很让面试官满意。出于好奇&#xff0c;小白问了问都存在哪些问题&#xff0c;其中一道便…

论文笔记:Graph neural networks: A review of methods and applications

1 GNN的设计pipeline 1.1 获取图结构 结构化场景 图结构在应用问题中是已知的 比如分子结构、物理系统非结构化场景 图结构在应用问题中是未知的 需要根据任务人为地建图 1.2 判断图的类型 & 尺寸 图的类型 有向图/无向图//异构图/同构图 图中的点和边类型是不是一样的…

Prometheus 简单介绍,部署

目录 Prometheus 介绍 功能介绍 Prometheus安装 安装介绍 prometheus.yml 文件介绍 prometheus实施安装 Prometheus常用命令参数有哪些 设置Prometheus-server开机自动启动 &#xff08;解释&#xff09; Prometheus简单启动页面介绍 node_exporte 是做什么的 安装n…

【个人笔记】真寻bot部署记录+远程postgreSQL访问+源码食用记录

安装 0. 系统配置 Centos v8.2 1. 安装 使用真寻bot https://github.com/zhenxun-org/zhenxun_bot-deploy bash <(curl -s -L https://raw.githubusercontent.com/zhenxun-org/zhenxun_bot-deploy/master/install.sh)选择1&#xff0c;安装go-cqhttp和zhenxun_bot&…

java boot项目读取yml配置信息

之前 我们讲过 boot的配置文件格式主要有三种 application.properties application.yml application.yaml 我们说推荐用 application.yml 其实从 xml 到 yml 都是要系统去读取他的配置信息 今天 我们就来写一下 在java中读取 yml的配置 这里 我在 yml中多加两个配置 代码如下…

LabView中顺序结构的使用

LabView中的顺序结构能够保证程序按照一定的顺序运行。LabView中的顺序结构分为平铺式顺序结构和层叠式顺序结构两种。 1 平铺式顺序结构 平铺式顺序结构包括一个或多个顺序执行的子程序框图&#xff0c;这种框图也被成为“帧”&#xff0c;程序按照帧为单位&#xff0c;以从…

MKS SERVO4257D 闭环步进电机_系列3 串口(RS485)指令说明

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&am…

ATA-3000系列功率放大器在精密微流体控制中的典型应用

ATA-3000系列功率放大器在精密微流体控制中的典型应用 压电陶瓷精密微流体控制应用&#xff1a; 精密微流体控制在医药配比、遗传基因与生物工程、航空航天、军工国防等方面具有广泛的应用&#xff0c;特别是在大流量伺服阀先导控制领域&#xff0c;具有重要作用。随着压电陶瓷…

TPO69 01|Why Snakes Have Forked Tongues P5P6|阅读真题精读|17:50~19:35

17:00&#xff5e;17:50 吃饭 目录 P56 生词 段落大意 P5段落大意 P6段落大意 题目 【5】事实信息题|定位准确非常重要✅ 【6】事实信息题|定位准确非常重要✅ 【7】推理题|文章是否提及|不要过度推理 【8】修辞目的题|举例一般为了说明✅ 【9】句子插入题|in other words|同义…

SpringCloud Alibaba Seata

SpringCloud Alibaba Seata Seata 基础 先看一个问题&#xff0c;引出Seata 单机单库(多表)处理事务示意图 分布式微服务架构下的数据库事务示意图 3. 梳理上图 用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持∶仓储服务∶对给定的商品扣除仓库/商品数量订单服务…

第10届蓝桥杯Scratch国赛真题集锦

编程题 第 1 题 问答题 捉迷藏之 题目说明 编程实现:小猫随机躲在6个按固定位置排列的前景角色任一个的后面,只露出一点点痕迹。具体要求: 1).添加任意1个背景,保留小猫角色,从角色库中挑选6个角色作为前景角色(小猫将躲在它们的后面) 2).6个前景角色按照两行三列的方式以固…

从数据工程师到提示工程师:使用AI解决数据准备任务

数据工程占据了数据科学过程的很大一部分。在CRISP-DM中&#xff0c;这个过程阶段被称为“数据准备”。它包括数据摄取、数据转换和数据质量保证等任务。在本文中&#xff0c;我们使用ChatGPT和Python解决了典型的数据工程任务。通过这样做&#xff0c;我们探索了数据工程与新的…

Redis集群安装之分片集群

1.为什么使用分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决&#xff1a; 海量数据存储问题高并发写的问题 哨兵模式本质是依旧是主从模式&#xff0c;在主从模式下我们可以增加slave节点来拓展读并发能力&#xff0c;但是没办法扩展写能力…

项目笔记-瑞吉外卖(全)

文章目录 1.业务开发day011.软件开发整体介绍2.项目整体介绍:star:3.开发环境搭建4.登录功能:star:4.1代码实现 5.退出功能6.页面效果出现 day021.完善登录功能2.新增员工功能3.启用禁用员工信息:star:(自定义消息转换器使用)4.编辑员工信息 day031.公共字段自动填充2.新增分类…

第11届蓝桥杯Scratch国赛真题集锦

编程题 第 1题 问答题 3D打印小猫 题目说明 背景信息:3D打印技术,它与普通打印工作原理基本相同,打印机内装有液体或粉未等“打印材料”,与电脑连接后,通过电脑控制把“打印材料”一层层叠加起来,最终把计算机上的蓝图变成实物。 编程实现:通过滑杆控制小猫造型变化,按下…

聚类算法以及聚类算法模型评估的介绍

一、聚类算法的介绍 1.什么是聚类算法 聚类算法是一类无监督学习算法&#xff0c;用于将数据集中的对象分组&#xff08;或聚类&#xff09;成具有相似性的集合。聚类算法不依赖于预定义的类别标签&#xff0c;而是根据数据的内在特点将相似的数据点聚集在一起。聚类算法的目…

分布式网络通信框架(三)——protobuf使用案例

例子1 test.proto文件如下&#xff1a; syntax "proto3"; // 声明了protobuf版本package fixbug; // 声明了代码所在的包&#xff08;生成C代码后就是namespace 名字&#xff09;// 定义登录消息类型 message LoginRequest {string name 1; // 1 代表name是这个m…