1. 程式人生 > 其它 >.net core 在 Swagger UI中顯示 Header

.net core 在 Swagger UI中顯示 Header

新增swagger

1)需要 先新增兩個nuget元件

 

 

 2)新增完成後,需要修改專案屬性,新增xml文件支援

 

 

 

新增完成。

接下來新增header

建立兩個類,一個是過濾器,一個是swagger的過濾類

1)過濾器類:

public class WebApiAuthFilterAttribute:AuthorizeAttribute {

static CommonLogger log = new CommonLogger(typeof(WebApiAuthFilterAttribute));

public override void OnAuthorization(HttpActionContext actionContext)
{
CommonChecker.printPerfomance("過濾器驗證開始", DateTime.Now);
CommonChecker.CheckHeader(actionContext);//此方法為檢查header中是否有引數,此處檢查如果不通過,會丟擲異常
//webAPI應當有對異常的全域性處理類,保證API不會返回500錯誤。

}

}

2)建立swagger過濾類

public class GlobalHttpHeaderFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
operation.parameters = new List<Parameter>();

var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); //判斷是否新增許可權過濾器
var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter); //判斷是否允許匿名方法

var isNeedLogin = apiDescription.ActionDescriptor.GetCustomAttributes<WebApiAuthFilterAttribute>().Any(); //此處放置剛才建立的驗證類
if (isNeedLogin)//如果有驗證標記則 多輸出2個文字框(swagger form提交時會將這2個值放入header裡)
{
operation.parameters.Add(new Parameter { name = "openID", @in = "header", description = "登入成功時返回的openID", required = false, type = "string" });
operation.parameters.Add(new Parameter { name = "telephone", @in = "header", description = "獲取手機號時返回的手機號", required = false, type = "string" });
operation.parameters.Add(new Parameter { name = "token", @in = "header", description = "獲取手機號時返回的sessionID", required = false, type = "string" });
}
}
}

3) 在swaggerConfig.cs中添加註冊程式碼

GlobalConfiguration.Configuration
.EnableSwagger(c =>
{

c.OperationFilter<Filters.GlobalHttpHeaderFilter>();/*新增此行*/
});

 

在需要驗證的controller前面加上過濾器標記

 

 執行結果如圖:

 

 

 

 

摘錄來源: https://blog.csdn.net/zhang_adrian/article/details/90241878