SpringFox SpringDoc 附件ui展示

news2024/11/20 1:42:14

文章目录

  • 前言
  • 一、swagger v3 附件类型参数
  • 二、springdoc 附件类型参数
    • 1.springfox迁移springdoc注解对应关系
    • 2.springdoc 附件参数处理
  • 三、RequestBody、RequestPart、RequestBody的区别
    • 3.1 @RequestParam
    • 3.2 @RequestBody
    • 3.3 @RequestPart


前言

swagger 升级V3后发现swagger ui 对附件类型参数无法支持,
springfox迁移springdoc后 附件类型参数无法支持

预期结果:
在这里插入图片描述

一、swagger v3 附件类型参数

  1. 多参数,对附件采用@RequestPart可以解决问题。
    @ApiOperation(value = "上传文件")
    @ApiOperationSupport(order = 2)
    @PostMapping(value = "/v1/upload")
    public Result<AttachmentResp> upload(@RequestPart("file") @ApiParam(name = "file", value = "上传文件", required = true) MultipartFile file,
                                         @RequestParam(value = "path") @ApiParam(name = "path", value = "eg:data/plan/", required = true) String path,
                                         @RequestParam(value = "clientId") @ApiParam(name = "clientId", value = "应用id", required = true) String clientId) {
        AttachmentResp upload = service.upload(file, path, clientId);
        return Result.success(upload);
    }
  1. 封装入参为对象实现方式
    @ApiModelProperty(value = "上传文件", required = true, dataType = "__file")
    对文件类型参数特别指定文件类型
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FileReq {
    @ApiModelProperty(value = "上传文件", required = true, dataType = "__file")
    private MultipartFile file;
    @ApiModelProperty(name = "path", value = "eg:data/plan/", required = true)
    private String path;
    @ApiModelProperty(name = "md5")
    private String fileIdentifier;
    @ApiModelProperty(name = "clientId", value = "应用id", required = true)
    private String clientId;
}

二、springdoc 附件类型参数

1.springfox迁移springdoc注解对应关系

用 swagger 3 注释替换 swagger 2 注释(它已经包含在springdoc-openapi-ui依赖项中)。swagger 3 注释的包是io.swagger.v3.oas.annotations.

  • @Api→@Tag

  • @ApiIgnore→@Parameter(hidden = true)或@Operation(hidden = true)或@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”)

https://springdoc.org/#migrating-from-springfox

2.springdoc 附件参数处理

各种尝试后无法封装参数,只能采用多参数形式,其中附件采用@RequestPart 其他参数采用@RequestParam

    @PostMapping(value = "/v1/upload")
    public Result<AttachmentResp> upload(@RequestParam @Parameter(description = "上传路径", required = true) String path,
                                         @Parameter(description = "文件MD5") String fileIdentifier,
                                         @RequestParam @Parameter(description = "应用id", required = true) String clientId,
                                         @RequestPart @Parameter(description = "上传文件", required = true) MultipartFile file) {
        FileReq req = FileReq.builder().file(file).path(path).fileIdentifier(fileIdentifier).clientId(clientId).build();
        AttachmentResp upload = service.upload(req);
        return Result.success(upload);
    }

三、RequestBody、RequestPart、RequestBody的区别

3.1 @RequestParam

只能用来接收基本数据类型、String 或者MultipartFile类型。
@RequestParam配置参数:

required 是否必须,默认为 true。
defaultValue 请求参数默认值。
value 请求参数名
说明:
multipartfile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。

3.2 @RequestBody

适用于请求体格式为 application/json的请求,只能用于接收对象。

3.3 @RequestPart

支持的请求方法是MultipartFile,@RequestPart适用于复杂的请求域(像JSON,XML),既可以接收对象又可以接收二进制数据流。

在这里插入图片描述

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

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

相关文章

【光伏预报/太阳能预报】上海道宁与Solargi为您提供开发地理数据库模拟工具和网络服务

Solargis提供开发地理数据库 模拟工具和网络服务 用于太阳能发电的规划 性能监控和管理 推动全球经济 转向可持续生产和消费 并推广环保能源技术 Solargis数据是用于 屋顶光伏系统性能监测的 日射强度计的实用替代方案 对于大型地面安装光伏系统 Solargis可作为 独立…

DB2 将多行记录合并成一行

SELECT replace(replace(xml2clob(xmlagg(xmlelement(NAME A, wdd.CASE_NUMBER||,))),<A>,),</A>,) AS CASE_NUMBERFROM WMS_DECLARE_DETAIL wdd其中&#xff1a;NAME A 要与 ‘’ 相同 &#xff0c;wdd.CASE_NUMBER 为字段&#xff0c;也可以加上GROUP BY 进行分组…

“邮件营销:5个关键问题,缺一不可

外贸公司的客户习惯使用邮件处理日常和工作事项。所以&#xff0c;我们也可以考虑使用邮件来和他们达成长期联系。而邮件营销作为最早出现的一批营销方式&#xff0c;它以极高的投资回报比依然占据着不可撼动的地位。但是&#xff0c;对于想开始邮件营销&#xff0c;但苦于没有…

W10做 .py文件的定时任务

因为领导让我们每天六点报当天数据,所以我写了个自动化的脚本,在定时这个问题研究了一两天 我有尝试过通过使用pyinstaller来打包我的.py文件,打包成exe文件,但是打包后存在各种问题,最多的就是缺少包,但是把包的文件夹导了也会出现问题,那就只能另辟蹊径了 1.我在py里面做了…

什么是模糊控制?

模糊控制设计原理 1、传统控制系统和模糊控制系统 传统控制系统结构&#xff1a; 控制目的&#xff1a;通过控制器调节控制信号u&#xff0c;使输出信号y达到要求 模糊控制系统结构&#xff1a; 与传统控制系统的差异&#xff1a;用模糊控制器FC&#xff08;Fuzzy Controller&…

Qt5.9学习笔记-事件(二) 自定义事件

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

算法设计与智能计算 || 专题八: 拉普拉斯算子与图拉普拉斯

拉普拉斯算子与图拉普拉斯 文章目录 拉普拉斯算子与图拉普拉斯1. 拉普拉斯基本概念与计算1.1 哈密尔顿算子1.2 梯度(gradient)1.3 散度(divergence)1.4 拉普拉斯算子 2. 图像或图上的拉普拉斯算子2.1 离散网格上的拉普拉斯算子2.2 图(graph)上的拉普拉斯算子2.2.1 图的梯度(考虑…

云时通助力耐消品行业经销商数字化管理,全面破除渠道管理难题

随着中国商业正在从“消费红利”经济向“数智创新”经济进化&#xff0c;耐用消费品零售发展思路从单节点成本和效率提升&#xff0c;向数字技术触发的全链路数智化转型。如何顺利从“传统分销模型”向“零售模式”转型成为企业关注重点问题。 耐消品作为典型的长链条交易&…

人生不能重来,于是有了电影

人生不能重来&#xff0c;于是有了电影&#x1f3ac;&#xff0c;2020年对于我来说是特殊的年份&#xff0c;由于疫情公司受到严重打击&#xff0c;我所属的行业与我背道而驰&#xff0c;就这样&#xff0c;我失业了&#xff0c;从没想过&#xff0c;会因为这个原因而离开一家自…

机器学习之朴素贝叶斯一

一、概述 朴素贝叶斯算法是典型的有监督学习算法&#xff0c;解决的是分类问题 贝叶斯算法是一种基于贝叶斯定理的分类算法&#xff0c;它的优点和缺点如下&#xff1a; 优点&#xff1a; 算法原理简单易懂&#xff0c;实现较为容易&#xff1b;可以利用先验知识对模型进行训…

2.0 Vue框架设计的核心要素

本章主要讲解&#xff0c;一个好的框架在构建的时候&#xff0c;需要考虑到的要素&#xff0c;包含报错信息反馈、警告信息反馈、减少打包体积、良好的输出、特性开关&#xff08;兼容&#xff09;等 1、提升用户开发体验 提升用户开发体验主要体现在用户使用框架进行开发时&…

3DES实验 思考与练习:

T1&#xff1a;关于3DES的分析 和 库函数的思考——完全领悟了&#xff01;&#xff01;&#xff01; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/des.h> /***********************************************…

java小记

public class Test {/*** 谓类的方法就是指类中用static 修饰的方法&#xff08;非static 为实例方法&#xff09;&#xff0c;比如main 方法&#xff0c;那么可以以main* 方法为例&#xff0c;可直接调用其他类方法&#xff0c;必须通过实例调用实例方法&#xff0c;this 关键…

原生OpenFeign相较于传统HTTP工具的优化和原理

文章目录 1.HTTP工具使用流程及问题1.1 使用OkHttp3流程示例1.2 存在的两大问题 2.OpenFeign的优化3.OpenFeign实现原理3.1 使用Feign构造动态代理对象3.2 Feign动态代理的实现原理 本篇介绍的是springcloud-openfeign的底层框架io.github.openfeign&#xff0c;重点不是框架如…

【Redis】Redis缓存雪崩、缓存穿透、缓存击穿(热key问题)

目录 一、缓存穿透 1、概念 2、解决办法 1.缓存空对象 2.布隆过滤 二、缓存雪崩 1、概念 2、解决办法 1.给key设置随机的过期时间TTL 2.业务添加多级缓存 3.利用集群提供服务可用性 4.缓存业务添加降级限流 三、缓存击穿 1、概念 2、解决办法 1.互斥锁 2.逻辑…

数据结构:第三章 栈、队列和数组

文章目录 一、栈1.1栈的概念1.1.1栈的定义1.1.2栈的基本操作1.1.3栈的常见考题1.1.4小结 1.2栈的顺序存储实现1.2.1顺序栈的定义1.2.2初始化操作1.2.3进栈操作1.2.4出栈操作1.2.5获取栈顶元素操作1.2.6共享栈1.2.7小结 1.3栈的链式存储实现1.3.1链栈的定义1.3.2小结 二、队列2.…

Optional的使用详解

工作中经常会调外部接口、或者查询表等&#xff0c;如果对返回结果不进行空指针判断的话就会导致空指针异常。针对这种情况经常会使用if进行判断: private boolean isNotNull(Object param) {if (param null) {return false;} else {return true;}}这样写其实功能上没有任何问…

上班摸鱼在群里吹牛B,逮到一个阿里10年老测试开发,聊过之后收益良多...

老话说的好&#xff0c;这人呐&#xff0c;一单在某个领域鲜有敌手了&#xff0c;就会闲得蛋疼。前几天我在上班摸鱼刷群的时候认识了一位阿里测试开发大佬&#xff0c;在华为工作了10年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内有…

USB协议分析仪

1 ULPI PHY passive sniffing mode 概念: non driving, no pull-up, no pull-down Function Control.opMode 1; // non-Driving OTG Control.DpPulldown 0; // no pull-down OTG Control.DmPulldown 0; // no pull-down USB IO.ChargerPullupEnDP 0; // no pull-up USB IO.…

九、MyBatis动态SQL

文章目录 九、动态SQL9.1 if9.2 where9.3 trim9.4 choose、when、otherwise9.5 foreach9.6 SQL片段 本人其他相关文章链接 九、动态SQL 9.1 if 总结&#xff1a;根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到SQL中。 User getUserByParamsWithIf(User user…