zoukankan      html  css  js  c++  java
  • .net core webapi 文件上传在 Swagger 文档中的有好提示处理

    前提:

      需要nuget   Swashbuckle.AspNetCore 我暂时用的是  4.01 最新版本;

     描述:解决 .net core webapi 上传文件使用的是 IFormFile,在Swagger 接口描叙的时候很不友好,为解决接口文档的友好描叙;

    实际效果:

    解决办法:

      步骤1 增加 Swagger 的选项过滤器 SwaggerFileUploadFilter.cs

    /// <summary>
        /// Swagger 上传文件过滤器
        /// </summary>
        public class SwaggerFileUploadFilter : IOperationFilter
        {
            /// <summary>
            /// 应用过滤器
            /// </summary>
            /// <param name="operation"></param>
            /// <param name="context"></param>
            public void Apply(Operation operation, OperationFilterContext context)
            {
              #region 文件上传处理
                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"
                    });
                }
                 #endregion
            }
        }

       步骤2 对 startup.cs swagger 配置项进行过滤

                services.AddSwaggerGen(options =>
                {
                    ..........
                    options.OperationFilter<SwaggerFileUploadFilter>();
                });
  • 相关阅读:
    GIT使用方法
    结对-结对编项目贪吃蛇-设计文档
    结对-结对编项目贪吃蛇-开发环境搭建过程
    《团队-爬取豆瓣电影TOP250-需求分析》
    《团队-爬取豆瓣电影TOP250-成员简介及分工》
    结对-结对编项目贪吃蛇-需求分析
    20170906-构建之法:阅读问题
    20170906-构建之法:现代软件工程-阅读笔记
    团队名称:极限定理
    软件工程初识
  • 原文地址:https://www.cnblogs.com/intotf/p/10075162.html
Copyright © 2011-2022 走看看