首页 > 其他分享 >swagger文档请求参数为文件属性添加选择文件按钮

swagger文档请求参数为文件属性添加选择文件按钮

时间:2023-07-26 17:00:26浏览次数:44  
标签:文件属性 value public 参数 import put 文档 swagger class

在编写接口时,将所有参数封装到实体中,其中就包含MultipartFile类型的参数

eg:

参数实体:User

@ApiModel(value = "用户实体类")
@Data
public class User {
    @ApiModelProperty(value = "用户名")
    public String userName;
    @ApiModelProperty(value = "密码")
    public String password;
    @ApiModelProperty(value = "照片")
    public MultipartFile file;
}

接口:


@ApiOperation(value = "接口方法描述4")//这是给接口方法添加注释的
@PostMapping(value = "/insertUser")
public String insertUser(User user){
   return "我是用户="+user.getUserName();
}

显示正常时:

调用接口:

发现文件为,null

解决方式:@ApiImplicitParams(dataType="__file",paramType="form")设置参数类型和传参方式

参数支持类型:


package springfox.documentation.schema;
 
import com.fasterxml.classmate.ResolvedType;
import com.google.common.collect.ImmutableMap;
import org.springframework.web.multipart.MultipartFile;
 
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Currency;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
 
import static com.google.common.collect.Sets.*;
 
public class Types {
  private Types() {
    throw new UnsupportedOperationException();
  }
 
  private static final Set<String> baseTypes = newHashSet(
      "int",
      "date",
      "string",
      "double",
      "float",
      "boolean",
      "byte",
      "object",
      "long",
      "date-time",
      "__file",
      "biginteger",
      "bigdecimal",
      "uuid");
  private static final Map<Type, String> typeNameLookup = ImmutableMap.<Type, String>builder()
      .put(Long.TYPE, "long")
      .put(Short.TYPE, "int")
      .put(Integer.TYPE, "int")
      .put(Double.TYPE, "double")
      .put(Float.TYPE, "float")
      .put(Byte.TYPE, "byte")
      .put(Boolean.TYPE, "boolean")
      .put(Character.TYPE, "string")
 
      .put(Date.class, "date-time")
      .put(java.sql.Date.class, "date")
      .put(String.class, "string")
      .put(Object.class, "object")
      .put(Long.class, "long")
      .put(Integer.class, "int")
      .put(Short.class, "int")
      .put(Double.class, "double")
      .put(Float.class, "float")
      .put(Boolean.class, "boolean")
      .put(Byte.class, "byte")
      .put(BigDecimal.class, "bigdecimal")
      .put(BigInteger.class, "biginteger")
      .put(Currency.class, "string")
      .put(UUID.class, "uuid")
      .put(MultipartFile.class, "__file")
      .build();
 
  public static String typeNameFor(Type type) {
    return typeNameLookup.get(type);
  }
 
  public static boolean isBaseType(String typeName) {
    return baseTypes.contains(typeName);
  }
 
  public static boolean isBaseType(ResolvedType type) {
    return baseTypes.contains(typeNameFor(type.getErasedType()));
  }
 
  public static boolean isVoid(ResolvedType returnType) {
    return Void.class.equals(returnType.getErasedType()) || Void.TYPE.equals(returnType.getErasedType());
  }
}

通过上面Types类可以看到设置dataType为__file,paramType为form即可设置参数类型和传参方式

@ApiOperation(value = "接口方法描述4")//这是给接口方法添加注释的
@PostMapping(value = "/insertUser")
@ApiImplicitParams({@ApiImplicitParam(paramType = "form", dataType="__file", name = "file1",value = "照片啊", required = false)})
public String insertUser(User user){
    return "我是用户="+user.getUserName();
}

成功接收到

注:我这里用的swagger版本是2.9.2,此版本使用"__file"设置参数为文件对象,低版本中使用的是"file"

swagger 注解:

@Api:用在请求的类上,表示对类的说明
    tags="说明该类的作用,可以在UI界面上看到的注解"
    value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
 
 
@ApiOperation:用在请求的方法上,说明方法的用途、作用
    value="说明方法的用途、作用"
    notes="方法的备注说明"
 
 
@ApiImplicitParams:用在请求的方法上,表示一组参数说明
    @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
        name:参数名
        value:参数的汉字说明、解释
        required:参数是否必须传
        paramType:参数放在哪个地方
            · header --> 请求参数的获取:@RequestHeader
            · query --> 请求参数的获取:@RequestParam
            · path(用于restful接口)--> 请求参数的获取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:参数类型,默认String,其它值dataType="Integer"       
        defaultValue:参数的默认值
 
 
@ApiResponses:用在请求的方法上,表示一组响应
    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
        code:数字,例如400
        message:信息,例如"请求参数没填好"
        response:抛出异常的类
 
 
@ApiModel:用于响应类上,表示一个返回响应数据的信息
            (这种一般用在post创建的时候,使用@RequestBody这样的场景,
            请求参数无法使用@ApiImplicitParam注解进行描述的时候)
    @ApiModelProperty:用在属性上,描述响应类的属性

原文章地址:

https://www.freesion.com/article/99731558105/

标签:文件属性,value,public,参数,import,put,文档,swagger,class
From: https://www.cnblogs.com/1399z3blog/p/17582955.html

相关文章

  • 基于 Android 的旅游电商应用系统设计与实现-计算机毕业设计源码+LW文档
    开题申请(包括选题目的意义、研究现状、成果提纲、文献综述、创新思路、参考文献,篇幅不够可另加页)1.开题依据1.1研究的目的意义伴随着智能终端的高速发展,移动互联网与传统旅游业开始了加速融合,如今的旅游业已经得到了蓬勃发展。用户只需要一台移动终端,就能够随时随地的掌握各类旅......
  • 基于微信小程序的校园设备报修平台的设计与实现-计算机毕业设计源码+LW文档
    【摘要】随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具。在高校,各种管理系统层出不穷,为校园设备报修管理开发必要的系统,能够有效的提升管理效率。一直以来,校园设备报修一直没有进行系统化的管理,学生无法快速进行报修,由此提出开发基......
  • 基于Android的眼镜商场app-计算机毕业设计源码+LW文档
    前端用户功能:(1)app首页:显示app所有商品的相关信息,供用户搜索、浏览查看,包括商品展示、商品类别及搜索等信息的展示。(2)注册登录:实现用户注册,登录系统实现,注册成功之后默认为登录状态。(3)商品展示:商家可以制作漂亮的眼镜产品图片,并在商场展示。用户可以通过查看图片细节来......
  • Tokyocabinet/Tokyotyrant文档大合集(转)
    1.前言2.参考资料链接3.使用介绍3.1.基本概念3.2.TokyoCabinet简介3.3.性能介绍3.4.tokyotyrant和Memcached的优势比较3.4.1.故障转移3.4.2.日志文件体积小3.4.3.超大数据量下表现出色3.5.安装3.5.1.编译安装tokyocabinet数据库3.5.2.编译安装to......
  • Google开源库Textfsm使用文档(中文翻译)
    TextFSM介绍TextFSM是一个Python模块,实现了一个基于状态机的模板,用来解析半格式化的文本。最初开发的目的是允许程序化地获取来源于CLI驱动设备的输出信息,例如网络路由器或交换机,不过它可以被用作任何这种类型的文本输出。这个引擎需要两个输入:一个模板文件和文本输入(比......
  • Spring Boot 集成 Swagger 在线接口文档
    今天看了SpringBoot集成Swagger在线接口文档有关的很多东西,简单总结下我学习到的,以供之后复习参考。学习目标:在学习过程中,主要掌握在SpringBoot中如何导入Swagger工具来展现项目中的接口文档。1.Swagger简介1.1 Swagger解决的问题    随着互联网技术的发展......
  • pytorch-metric-learning官方文档
    如何实现pytorch-metric-learning官方文档简介pytorch-metric-learning是一个用于度量学习的开源软件库,它提供了丰富的度量学习算法和损失函数。本文将指导您如何实现pytorch-metric-learning官方文档,让您能够快速上手并了解其使用方法。整体流程下面是实现pytorch-metric-lear......
  • python 文档比对
    ---->22.txt<----111,aaa222,bbb222,bbb---->33.txt<----111,aaa333,bbb#取交集intersectiondefcompare_txt_inter(file1,file2):withopen(file1,"r")asfile1,open(file2,"r")asfile2:content1=set(file1.r......
  • 【BBS_2.0演示文档】
    【BBS_2.0演示文档】已上传GIT:BBS相关项目:存储BBS相关的项目案例-Gitee.com【一】首页展示【二】注册功能【三】登录功能【四】个人后台页面【五】个人信息展示【六】精彩壁纸-展示抓取到的所有头像图片【七】查看原图-查看图片【八】切换图片-删除本......
  • 爆款阿里P5到P7晋升之路,九大源码文档助我超神果然努力幸运并存
    前言相信有许多的程序员,工作了这么多年;但是依然不知道自己掌握的技术栈+项目,究竟达到了阿里的什么职级,还有薪资水平是什么样的;下面就给大家分享一波对标阿里p5到P7职级所掌握的技术栈和薪资水平的路线,后续还有P8到P9的路线。P5到P7p8到p9九大源码文档经过这套学习路线的学习,让我渐......