網上看到不少整理的,但是當我搭建的時候發現很多包在nuget中找不到了,所以特地在此寫記錄一下
我的項目的版本是4.5的,用的nuget包是Swagger-Net和Swashbuckle.Net45
添加完成后右鍵項目屬性->生成->輸出 勾選XML文檔文件
如圖顯示就正常的文檔了,前提是你的代碼中有注釋
下邊講一下怎么在這個頁面中請求接口
顯示無參數的請求接口
這是有參數的使用
正常使用沒問題,但是,有的接口會在header中添加一些內容進行請求頭的驗證,這里講一下請求頭有驗證的情況下怎么設置
有過濾器ApiAuthAttribute 這里簡單檢查一下header中是否存在一個auth
protected override bool IsAuthorized(HttpActionContext actionContext) { var authHeader = from t in actionContext.Request.Headers where t.Key == "auth" select t.Value.FirstOrDefault(); if (authHeader != null) { string token = authHeader.FirstOrDefault(); if (string.IsNullOrEmpty(token)) { HttpResponseMessage result = new HttpResponseMessage(); result.StatusCode = (HttpStatusCode)401; actionContext.Response = result; return false; } else { return true; } } else { return false; } }
GlobalHttpHeaderFilter
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<ApiAuthAttribute>().Any();//是否有驗證用戶標記 if (isNeedLogin)//如果有驗證標記 多輸出1個文本框(swagger form提交是會將這兩個值放到header中) { operation.parameters.Add(new Parameter {name="auth",@in="header",description="令牌(登陸后可以獲取)",required=false,type="string" }); } } }
在App_Start文件夾中找到SwaggerConfig
查找"c.OperationFilter"在這個被注釋的代碼下邊添加一行
//GlobalHttpHeaderFilter是上邊創建的文件名 c.OperationFilter<GlobalHttpHeaderFilter>();
然后再啟動訪問文檔頁,如圖所示就可以了