.Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了。

我们知道,如果.net core 2.x使用swagger上传文件是需要写个操作过滤器的类。

public class SwaggerFileUploadFilter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) &&
!context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
{
return;
} var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList(); if (fileParameters.Count < )
{
return;
} operation.Consumes.Add("multipart/form-data"); foreach (var fileParameter in fileParameters)
{
var parameter = operation.Parameters.Single(n => n.Name == fileParameter.Name);
operation.Parameters.Remove(parameter);
operation.Parameters.Add(new NonBodyParameter
{
Name = parameter.Name,
In = "formData",
Description = parameter.Description,
Required = parameter.Required,
Type = "file"
});
}
}
}

需要在startup类中配置:

这样上传文件的api就有选择文件的按钮了:

然后升级到.net core 3.0 ,swagger目前4.x版本不支持,只能下5.x的预览版,然后一堆报错。首先配置中的Info 需要改成OpenApiInfo:

  services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Web API", Version = "v1" });
var xmlPath = Path.Combine(AppContext.BaseDirectory, "swagger.xml");
c.IncludeXmlComments(xmlPath);
c.OperationFilter<SwaggerFileUploadFilter>();
});

改成:

  services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Web API", Version = "v1", Description = "Web API" });
var xmlPath = Path.Combine(AppContext.BaseDirectory, "swagger.xml");
c.IncludeXmlComments(xmlPath);
});

而且swagger 5.0版本不需要手动写过滤器类,也就是

SwaggerFileUploadFilter

上文提到的这个类。

直接正常写api就可以了,不过IFormFile参数一定不要加[FromBody]这个特性。就像这样:

        /// <summary>
/// 上传文件
/// </summary>
/// <param name="formFile">文件</param>
/// <returns></returns>
[HttpPost]
public IActionResult test(IFormFile formFile)
{
return Ok("靓仔");
}

然后打开swagger就可以看到:

结束!

最新文章

  1. Hui之Hui.js 官方文档
  2. Linux 虚拟机重新生成配置文件无法启动
  3. attributeError:&#39;module&#39; object has no attribute ** 解决办法
  4. NSQ:分布式的实时消息平台
  5. poj 3468 线段树区间更新/查询
  6. putty ssh login linux
  7. c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组
  8. java学习之线程
  9. CMDB处理数据流程
  10. [CSAPP笔记][第六章存储器层次结构]
  11. ubuntu14.04下arm-linux-gcc 4.5.1的安装与配置
  12. sql 将表B中不存在表A的数据 插入到表A中
  13. Linux通过shell执行自动化部署
  14. sql server 性能调优之 资源等待PAGEIOLATCH
  15. 烧写树莓派系统,SSH配置,无屏登录流程
  16. HTTP 04 web 服务器
  17. 基于Python——实现远程下载sftp文件(只下载.zip文件)
  18. as3.0 在数组中找个找个,并且替换
  19. Spring之c3p0连接池配置和使用
  20. Linux man 命令

热门文章

  1. Test of String
  2. iOS硬解码获取宽高
  3. nmap 速查手册
  4. 获取最新的中国IP的脚本,给ROS可以使用的脚本
  5. Java判断文件类型
  6. expect脚本自动获取root权限
  7. Linux 就该这么学 CH06 存储结构与磁盘划分
  8. Beta冲刺(3/7)——2019.5.25
  9. FROM_UNIXTIME()时间戳转换函数
  10. python文件打包发布(引用的包也可以加进来),打包出错解决了,运行出错解决了