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.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){ }以上四部就可以实现⽂章开头的效果了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论