.Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了。api
咱们知道,若是.net core 2.x使用swagger上传文件是须要写个操做过滤器的类。ui
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 < 0) { 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类中配置:spa
这样上传文件的api就有选择文件的按钮了:.net
而后升级到.net core 3.0 ,swagger目前4.x版本不支持,只能下5.x的预览版,而后一堆报错。首先配置中的Info 须要改为OpenApiInfo:code
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>(); });
改为:orm
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版本不须要手动写过滤器类,也就是xml
SwaggerFileUploadFilter
上文提到的这个类。blog
直接正常写api就能够了,不过IFormFile参数必定不要加[FromBody]这个特性。就像这样:ip
/// <summary> /// 上传文件 /// </summary> /// <param name="formFile">文件</param> /// <returns></returns> [HttpPost] public IActionResult test(IFormFile formFile) { return Ok("靓仔"); }
而后打开swagger就能够看到:it
结束!