.net webapi 使用swagger生成文檔


網上看到不少整理的,但是當我搭建的時候發現很多包在nuget中找不到了,所以特地在此寫記錄一下

我的項目的版本是4.5的,用的nuget包是Swagger-Net和Swashbuckle.Net45

添加完成后右鍵項目屬性->生成->輸出  勾選XML文檔文件

啟動項目后訪問如下地址:

你的項目地址/swagger/ui/index

 

如圖顯示就正常的文檔了,前提是你的代碼中有注釋

下邊講一下怎么在這個頁面中請求接口

顯示無參數的請求接口

這是有參數的使用

 

正常使用沒問題,但是,有的接口會在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>();

然后再啟動訪問文檔頁,如圖所示就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM