對於asp.net core 下的Swagger,之前一直用Swashbuckle的,因為官方推薦,再加上有老張的博客助力《從壹開始前后端分離【 .NET Core2.0/3.0 +Vue2.0 】框架之三 || Swagger的使用 3.1》,所以用起來很順手,但Swashbuckle有個問題,一直沒解決,就是如果你的網站不是部署在根目錄的話,是部署IIS在虛擬應用程序下的話,那Swagger就用不了了,不知有沒有朋友有解決的方法,后面我試用了NSwag,發現它可以用在虛擬應用程序下,也是微軟官方推薦的,多方比對,就采用了NSwag.AspNetCore。
使用方法,很簡單,按微軟官網介紹的入門方法,如下圖
我這個博客基礎的我就不寫出來了,寫幾點常用功能
實現登錄認證token的輸入
現在的前后端分享項目,主要采用在header里添加token來進行身份認證,那如何在NSwag的Swagger上面實現這個功能呢。代碼如下
services.AddOpenApiDocument(settings => { settings.AddSecurity("身份認證Token", Enumerable.Empty<string>(), new NSwag.OpenApiSecurityScheme() { Description = "JWT授權(數據將在請求頭中進行傳輸) 直接在下框中輸入Bearer {token}(注意兩者之間是一個空格)", Name = "Authorization", In = NSwag.OpenApiSecurityApiKeyLocation.Header, Type = NSwag.OpenApiSecuritySchemeType.ApiKey }); });
實現效果如下圖
實現控制器及接口的注釋
接口方法的注釋很容易,跟Swashbuckle基本一樣,在項目的屬性里勾選生成xml文檔。
然后在方法上這樣注釋就可以實現接口說明了。
但控制器的注釋說明就不像Swashbuckle那么方便了,它得用一個特性類OpenApiTag,如下圖所示
最終實現效果如下