JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

大家好,又见面了。

在JAVA做前后端分离的项目开发的时候,服务端需要提供接口文档供周边人员做接口的对接指导。越来越多的项目都在尝试使用一些基于代码自动生成接口文档的工具来替代由开发人员手动编写接口文档,而Swagger作为一款优秀的在线接口文档生成工具,以其功能强大、集成方便而得到了广泛的使用。

在项目中有一种非常常见的场景,就是接口的请求或者响应参数中会有一些字段的取值会限定为固定的几个可选值之一,而在代码中这些可选值往往会通过定义枚举类的方式来承载,比如:

根据操作类型,过滤对应类型的用户操作日志列表
如:
http://127.0.0.1:8088/test/queryOperateLogs?operateType=2

这里的请求参数operateType传入的值需要在后端约定的取值范围内,这个取值范围的定义如下:

@Getter
@AllArgsConstructor
public enum OperateType {
    ADD(1, "新增或者创建操作"),
    MODIFY(2, "更新已有数据操作"),
    DELETE(3, "删除数据操作"),
    QUERY(4, "查询数据操作");

    private int value;
    private String desc;
}

这里就需要我们在接口文档里面将此接口中operateType的可选值以及每个可选值对应的含义信息都说明清楚,这样调用方在使用的时候才知道应该传入什么值。

我们基于Swagger提供的基础注解能力来实现时,比较常见的会看到如下两种写法:

  • 写法1接口定义的时候,指定入参的取值说明

接口URL中携带的请求入参信息,通过@ApiImplicitParam注解来告诉调用方此接口允许接收的合法operateType的取值范围以及各个取值的含义。

比如下面这种场景:

@GetMapping("/queryOperateLogs")
@ApiOperation("查询指定操作类型的操作日志列表")
@ApiImplicitParam(name = "operateType", value = "操作类型,取值说明: 1,新增;2,更新;3,除;4,查询", dataType = "int", paramType = "query")
public List<OperateLog> queryOperateLogs(int operateType) {
    return testService.queryOperateLogs(operateType);
}

 这样,在swagger界面上就可以显示出字段的取值说明信息。

其实还有一种写法,即在代码的入参前面添加@ApiParam注解的方式来实现。比如:

    @GetMapping("/queryOperateLogs")
    @ApiOperation("查询指定操作类型的操作日志列表")
    public List<OperateLog> queryOperateLogs(@ApiParam(value = "操作类型,取值说明: 1,新增;2,更新;3,删除;4,查询") @RequestParam("type") int operateType) {
        return testService.queryOperateLogs(operateType);
    }

这样也能达到相同的效果。

Swagger自定义和出(过滤器)的支持 _ 这是之前文章 <在asp.net core 下定义统一的和出格式>的高阶应用篇,由于增加了框架级别的和出定义,导致swagger无法识别外部的定义,仅仅识别为控制器方法的定义。如果追根溯源,这个跟swagger也没太大的关系,应该是asp提供的ApiExplorer的问题,毕竟是静态反射,你想让他支持动态的过滤,这的确是勉为其难了。 swagger的结构 我使用的环... 阅读详情

相关推荐

Java开发者专用的Smart-Swagger工具介绍

随着API技术的迅速发展,API文档的维护成为开发和运维团队的一项重要任务。Smart-Swagger工具应运而生,旨在简化这一过程。Smart-Swagger是一个强大的工具,它利用注释生成清晰、准确的Swagger API文档,极大地提高了文档的可读性和维护效率。Smart-Swagger不仅仅是一个文档生成器,它还支持自动化的API文档版本控制、交互式UI测试等功能,从而为API的全生命周期管理提供一站式解决方案。

weixin_35752233的博客 738

扩展swagger自定义注解

swagger扩展

qq_24322841的博客 2839

SpringBoot整合Swagger实战项目示例

在现代微服务与前后端分离开发模式盛行的背景下,API文档的编写与维护成为开发流程中不可或缺的一环。传统方式多依赖人工编写文档,不仅效率低下,且容易与代码脱节,导致信息不一致。Swagger 作为一种开源的 API 文档解决方案,通过代码注解自动生成结构化文档,实现了 API 描述、参数说明、请求测试等核心功能的自动化。它遵循 OpenAPI 规范,支持多语言平台,能够与 SpringBoot 等主流框架无缝集成。

weixin_29443363的博客 860

Open Swagger & Java 规范

从SpringFox迁移到SpringDoc,从Swagger3开始,SpringFox更新进度缓慢,SpringDoc相较于SpringFox具有更明显的优势,相较 SpringFox来说,SpringDoc的支撑时间更长,无疑是更好的选择。开发人员照本规范文档进行配置前,请引以下依赖,目前最新版本为1.5.12,后续会根据版本更新进行改动。依赖引 配置文件和配置类 依赖引完毕后,需进行相关配置,配置分为配置文件和配置类两种,下面将分别进行说明配置项是否必需作用配置值这里只列举一些常用配置,

白衣胜雪 3490

Swagger除了注解方式之外自定义添加接口,额外定义接口

一、业务场景  集成swagger框架之后,在代码上添加swagger注解即可生成api接口文档,在大多数情况下都适用。但除此之外我们还有其他的一些场景:  1.非springMvc注解暴露接口,无法通过这种注解方式生成api接口文档  2.引了其他jar包,jar包里暴露了接口,但没有在接口上添加swagger注解,我们要为其生成api接口文档 3.jar包引的接口,并且使用了s

神在异乡 1万+

JAVA自定义扩展Swagger能力自动生成参数取值含义说明,提升开发效率

前面已经找到了一种思路将我们的定制逻辑注Swagger文档生成框架中进行调用,那么下一步我们就得确认一种相对简单的策略,告诉框架哪个字段需要使用枚举来自动生成取值说明,以及使用哪个枚举类来生成。这里我们使用自定义注解的方式来实现。Swagger为不同的场景分别提供了@APIParam、、等不同的注解,我们可以简化下,提供一个统一的自定义注解即可。比如:// 接口文档上的显示的字段名称,不设置则使用field本来名称// 字段简要描述,可选// 标识字段是否必填。

java1527的博客 816

Java自定义扩展Swagger能力,自动通过枚举类生成参数取值含义描述的实现策略

因为@ApiParam​中指定的内容会被显示到Swagger​界面上,那么在Swagger的框架中,一定有个地方会尝试去获取此注解中指定的相关字段值,然后将注解的内容转为界面上的文档内容。所以想要定制,首先必须要了解当前是如何处理的。先来看下面给定的这个枚举类,其中包含order、value、desc​三个属性值,而value​字段是我们的接口字段需要传的真实取值,desc​是其对应的含义描述,那么该如何让我们自定义Swagger扩展类知晓应该使用value和desc字段来生成文档描述内容呢?

Q54665642ljf的博客 1321

Swagger扩展 - 同一个接口生成多份Swagger API文档

为同一个`@ApiOperation`生成多份不同Swagger API文档

夫礼者的专栏 2047

JAVASwagger,提升开发效率用它很有必要

前面已经找到了一种思路将我们的定制逻辑注Swagger文档生成框架中进行调用,那么下一步我们就得确认一种相对简单的策略,告诉框架哪个字段需要使用枚举来自动生成取值说明,以及使用哪个枚举类来生成。这里我们使用自定义注解的方式来实现。Swagger为不同的场景分别提供了@APIParam、、等不同的注解,我们可以简化下,提供一个统一的自定义注解即可。// 接口文档上的显示的字段名称,不设置则使用field本来名称// 字段简要描述,可选// 标识字段是否必填// 指定取值对应的枚举类。

weixin_49307478的博客 996

SpringBoot集成Swagger终极版

学习目标: 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 Swagger简介 前后端分离 前端 -> 前端控制层、视图层 后端 -> 后端控制层、服务层、数据访问层 前后端通过API进行交互 前后端相对独立且松耦合 产生的问题 前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发 解决方案 首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险 Swagger 号称世界上最流行的API框.

不言而喻i的博客 7040

Swagger-Core自定义模型转换器:扩展API规范生成的完整指南

Swagger-Core 是一个强大的开源工具,用于生成和管理 RESTful API 的 Swagger 规范。作为 API 开发的重要组件,swagger-core 提供了灵活的模型转换器机制,让开发者能够自定义 API 规范的生成过程。本指南将详细介绍如何利用 swagger-core 自定义模型转换器来扩展 API 规范生成能力。 ## 🚀 什么是模型转换器? 在 swagger-c

gitblog_00988的博客 715

终极指南:Swagger ModelConverter如何自动生成REST API文档的核心机制

Swagger Core是生成Swagger API规范的核心工具,它通过ModelConverter机制自动将Java模型转换为API文档,极大简化了REST API的文档维护工作。本文将深解析ModelConverter的工作原理,帮助开发者快速掌握这一强大功能。 ## ModelConverter:API文档自动生成的核心引擎 ModelConverter是Swagger Core中负

gitblog_01042的博客 812

JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容

好啦,关于如何补全Swagger接口的描述内容、如何自主决定某些内容的显示与隐藏等相关的内容,这里就给大家分享到这里啦。关于本篇内容你有什么自己的想法或独到见解么?欢迎在评论区一起交流探讨下吧。📣📣关于本文中涉及的演示代码的完整示例,我已经整理并提交到github中,如果您有需要,可以自取:私信我就好。

xhbzl的博客 474

ClawdBot文档生成:基于Swagger自动生成Gateway OpenAPI 3.0规范

本文介绍了如何在星图GPU平台上自动化部署ClawdBot镜像,快速构建符合OpenAPI 3.0规范的AI网关服务。该镜像支持基于Swagger自动生成标准化接口文档,典型应用于Telegram等第三方应用与本地AI模型的高效、可靠集成,显著提升API协作与工程化落地效率。

weixin_36431814的博客 1040

Swagger2Markup实战:从Swagger UI到静态文档的完美转换

Swagger2Markup是一款强大的开源工具,能够将Swagger API规范无缝转换为高质量的AsciiDoc或Markdown静态文档。它完美解决了API文档维护的痛点,通过将手写文档自动生成的API文档相结合,帮助开发团队轻松创建和维护最新的RESTful API文档。 ## 为什么选择Swagger2Markup? 在API开发过程中,文档的及时性和准确性至关重要。传统的手动编写

gitblog_01128的博客 766
上一篇: Spring Boot从新秀到超巨,这份实战文档为你指明方向
下一篇: 实战,SpringBoot + RabbitMQ死信队列实现超时关单
Java佳佳
博客等级 码龄4年 216粉丝 · 286原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值