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>();
                });
  • 相关阅读:
    登录界面点击登录后如何延迟提示成功的div的显示时间并跳转
    关于如何用jq定位到某个元素的索引
    总结React关于require的问题
    关于React的赋值与调用方法
    React项目搭建(脚手架)
    关于th,td,tr的一些相关标签
    一个IP多个https站点配置
    ubuntu配置apache的虚拟主机
    putty如何使用
    CI基本配置
  • 原文地址:https://www.cnblogs.com/intotf/p/10075162.html
Copyright © 2011-2022 走看看