当前位置: 移动技术网 > IT编程>开发语言>.net > .net core webapi 文件上传在 Swagger 文档中的有好提示处理

.net core webapi 文件上传在 Swagger 文档中的有好提示处理

2018年12月07日  | 移动技术网IT编程  | 我要评论

吴后义,电婊家族,中文发烧网

前提:

  需要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>();
            });

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网