Abp中SwaggerUI的介面文檔添加上傳檔案參數類型

來源:互聯網
上載者:User

標籤:action   etc   schema   logs   att   rip   類型   images   opened   

在使用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){ } 以上四部就可以實現文章開頭的效果了。

Abp中SwaggerUI的介面文檔添加上傳檔案參數類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.