zoukankan      html  css  js  c++  java
  • Abp中SwaggerUI的接口文档添加上传文件参数类型

    在使用Swashbuckle上传文件的时候,在接口文档中希望看到上传控件,但是C#中,没有FromBodyAttribute这个特性,所以需要在运行时,修改参数的swagger属性。
     
    首先看下,最终效果:
     
     
    下面介绍实现。
     
    实现原理,通过swagger提供的filter,找到action中带有SwaggerFileUpload特性的参数,然后给swagger operaion.parameters添加一个自定义的参数,即文件类型参数即可。
     
    (1)定义SwaggerFileUploadAttribute。
    [AttributeUsage(AttributeTargets.Parameter)]
    public class SwaggerFileUploadAttribute : Attribute
    {
    public bool Required { get; private set; }
     
    public SwaggerFileUploadAttribute(bool Required = true)
    {
    this.Required = Required;
    }
    }
    View Code
    (2)添加Filter。
    /// <summary>
    /// swagger file upload parameter filter
    /// </summary>
    public class SwaggerFileUploadFilter : IOperationFilter
    {
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
    var parameters = apiDescription.ActionDescriptor.GetParameters();
    foreach (HttpParameterDescriptor parameterDesc in parameters)
    {
    var fileUploadAttr = parameterDesc.GetCustomAttributes<SwaggerFileUploadAttribute>().FirstOrDefault();
    if (fileUploadAttr != null)
    {
    operation.consumes.Add("multipart/form-data");
     
    operation.parameters.Add(new Parameter
    {
    name = parameterDesc.ParameterName + "_file",
    @in = "formData",
    description = "file to upload",
    required = fileUploadAttr.Required,
    type = "file"
    });
    }
    }
    }
    }
    View Code
    (3)给Swagger设置Filter。
    (4)Action中的参数设置特性,测试。
    Public void TestSwaggerUploadFile([SwaggerFileUpload] file){ }
     
    以上四部就可以实现文章开头的效果了。
  • 相关阅读:
    javascript 创建字典
    IE显示PNG
    透明PNG背景图片 For IE 6.0 Firefox Opera
    IE FireFox对CSS的不同解释收集
    javascript中replace()
    netstat 指令返回结果中state含义
    FIREFOX层的自适应高度
    select options的操作
    事件冒泡
    C++第三讲笔记
  • 原文地址:https://www.cnblogs.com/sessionliang/p/6688065.html
Copyright © 2011-2022 走看看