.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
結束!