海口网站seo,营销网络是指公司在国内外寻找战略伙伴和同盟者,最近的新闻热点时事,wordpress俄语版前言随着前后端分离开发模式的普及#xff0c;后端人员更多是编写服务端API接口。调用接口实现文件上传是一个常见的功能#xff0c;同时也需要一个选择文件上传的界面#xff0c;可以编写前端界面上传#xff0c;可以使用Postman、curl来模拟上传请求。上述的方式多多少少… 前言 随着前后端分离开发模式的普及后端人员更多是编写服务端API接口。调用接口实现文件上传是一个常见的功能同时也需要一个选择文件上传的界面可以编写前端界面上传可以使用Postman、curl来模拟上传请求。上述的方式多多少少有点麻烦。Swagger作为Api说明文档及调试工具如果它能提供文件上传的界面默认不提供那会更加方便文件上传提示本文将介绍如何使用Swagger来上传文件。 步骤1. 安装SwaggerInstall-Package Swashbuckle.AspNetCore 2. 配置Swagger中间件在Startup.ConfigureServices中添加services.AddSwaggerGen(c {c.SwaggerDoc(v1, new Info { Title My API, Version v1 });
}); 在Startup.Configure中添加app.UseSwagger();app.UseSwaggerUI(c {c.SwaggerEndpoint(/swagger/v1/swagger.json, My API V1);
}); 3. 编写API// POST api/values[HttpPost]public void Post(IFormFile file){ //TODO:Save file...}// PUT api/values/5[HttpPut({id})]public void Put(int id, IFormFile file){ //TODO:Save file...}4. 编写SwaggerFileUploadFilterpublic 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 }); } }}5. 注册SwaggerFileUploadFilterc.OperationFilterSwaggerFileUploadFilter(); 6. 查看结果POST方法 PUT方法 原理解析 使用Swagger的文件上传的关键在于SwaggerFileUploadFilter它继承于Swashbuckle的IOperationFilter也即它只作用于Swagger不会对其它模块造成影响。 我们再来看一下SwaggerFileUploadFilter里面的Apply方法的逻辑 1. 判断请求的方法是否为POST或者PUT如果是其它请求方法基本不可能是文件上传操作。 2. 查找方法中类型为IFormFile的参数。 3. 设置Consumes为“multipart/form-data”。 4. 替换IFormFile类型参数描述中的In为formData、Type为File。 源码地址https://github.com/ErikXu/.NetCoreTips/tree/master/SwaggerFileUpload 参考资料http://www.talkingdotnet.com/how-to-upload-file-via-swagger-in-asp-net-core-web-api/原文地址 https://www.cnblogs.com/Erik_Xu/p/8904854.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com