在使用asp.net core 進行api開發完成後,書寫api說明文檔對於程序員來講想必是件很痛苦的事情吧,但文檔又必須寫,並且文檔的格式若是沒有具體要求的話,最終完成的文檔則徹底取決於開發者的心情。或者詳細點,或者簡單點。那麼有沒有一種快速有效的方法來構建api說明文檔呢?答案是確定的, Swagger就是最受歡迎的REST APIs文檔生成工具之一!css
首先引入命名空間:html
using Swashbuckle.AspNetCore.Swagger;
將 Swagger 生成器添加到 Startup.ConfigureServices 方法中的服務集合中:程序員
//註冊Swagger生成器,定義一個和多個Swagger 文檔 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); });
在 Startup.Configure
方法中,啓用中間件爲生成的 JSON 文檔和 Swagger UI 提供服務:sql
//啓用中間件服務生成Swagger做爲JSON終結點 app.UseSwagger(); //啓用中間件服務對swagger-ui,指定Swagger JSON終結點 app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); });
啓動應用,並導航到 http://localhost:<port>/swagger/v1/swagger.json
。 生成的描述終結點的文檔顯示以下json格式。json
可在 http://localhost:<port>/swagger
找到 Swagger UI。 經過 Swagger UI 瀏覽 API文檔,以下所示。c#
要在應用的根 (
http://localhost:<port>/
) 處提供 Swagger UI,請將RoutePrefix
屬性設置爲空字符串:apiapp.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); c.RoutePrefix = string.Empty; });
在 AddSwaggerGen
方法的進行以下的配置操做會添加諸如做者、許可證和說明信息等:app
//註冊Swagger生成器,定義一個和多個Swagger 文檔 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Version = "v1", Title = "yilezhu's API", Description = "A simple example ASP.NET Core Web API", TermsOfService = "None", Contact = new Contact { Name = "依樂祝", Email = string.Empty, Url = "http://www.cnblogs.com/yilezhu/" }, License = new License { Name = "許可證名字", Url = "http://www.cnblogs.com/yilezhu/" } }); });
wagger UI 顯示版本的信息以下圖所示:asp.net
爲了防止博客被轉載後,不保留本文的連接,特地在此加入本文的連接:http://www.javashuo.com/article/p-xlcnpzoq-gy.html工具
你們先點擊下api,展開以下圖所示,能夠沒有註釋啊,怎麼來添加註釋呢?
按照下圖所示用三個/添加文檔註釋,以下所示
/// <summary> /// 這是一個api方法的註釋 /// </summary> /// <returns></returns> [HttpGet] public ActionResult<IEnumerable<string>> Get() { return new string[] { "value1", "value2" }; }
而後運行項目,回到swaggerUI中去查看註釋是否出現了呢
仍是沒有出現,別急,往下看!
可以使用如下方法啓用 XML 註釋:
啓用 XML 註釋後會爲未記錄的公共類型和成員提供調試信息。若是出現不少警告信息 例如,如下消息指示違反警告代碼 1591:
warning CS1591: Missing XML comment for publicly visible type or member 'TodoController.GetAll()'
若是你有強迫症,想取消警告怎麼辦呢?能夠按照下圖所示進行取消
注意上面生成的xml文檔文件的路徑,
注意:
1.對於 Linux 或非 Windows 操做系統,文件名和路徑區分大小寫。 例如,「SwaggerDemo.xml」文件在 Windows 上有效,但在 CentOS 上無效。
2.獲取應用程序路徑,建議採用
Path.GetDirectoryName(typeof(Program).Assembly.Location)
這種方式或者·AppContext.BaseDirectory這樣來獲取
//註冊Swagger生成器,定義一個和多個Swagger 文檔 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Version = "v1", Title = "yilezhu's API", Description = "A simple example ASP.NET Core Web API", TermsOfService = "None", Contact = new Contact { Name = "依樂祝", Email = string.Empty, Url = "http://www.cnblogs.com/yilezhu/" }, License = new License { Name = "許可證名字", Url = "http://www.cnblogs.com/yilezhu/" } }); // 爲 Swagger JSON and UI設置xml文檔註釋路徑 var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//獲取應用程序所在目錄(絕對,不受工做目錄影響,建議採用此方法獲取路徑) var xmlPath = Path.Combine(basePath, "SwaggerDemo.xml"); c.IncludeXmlComments(xmlPath); });
從新生成並運行項目查看一下注釋出現了沒有
經過上面的操做能夠總結出,Swagger UI 顯示上述註釋代碼的 <summary>
元素的內部文本做爲api大的註釋!
固然你還能夠將 remarks 元素添加到 Get
操做方法文檔。 它能夠補充 <summary>
元素中指定的信息,並提供更可靠的 Swagger UI。 <remarks>
元素內容可包含文本、JSON 或 XML。 代碼以下:
/// <summary> /// 這是一個帶參數的get請求 /// </summary> /// <remarks> /// 例子: /// Get api/Values/1 /// </remarks> /// <param name="id">主鍵</param> /// <returns>測試字符串</returns> [HttpGet("{id}")] public ActionResult<string> Get(int id) { return $"你請求的 id 是 {id}"; }
從新生成下項目,當好到SwaggerUI看到以下所示:
接口使用者最關心的就是接口的返回內容和響應類型啦。下面展現一下201和400狀態碼的一個簡單例子:
咱們須要在咱們的方法上添加:[ProducesResponseType(201)][ProducesResponseType(400)]
而後添加相應的狀態說明:返回value字符串若是id爲空
最終代碼應該是這個樣子:
/// <summary> /// 這是一個帶參數的get請求 /// </summary> /// <remarks> /// 例子: /// Get api/Values/1 /// </remarks> /// <param name="id">主鍵</param> /// <returns>測試字符串</returns> /// <response code="201">返回value字符串</response> /// <response code="400">若是id爲空</response> // GET api/values/2 [HttpGet("{id}")] [ProducesResponseType(201)] [ProducesResponseType(400)] public ActionResult<string> Get(int id) { return $"你請求的 id 是 {id}"; }
效果以下所示
下面咱們經過一個小例子經過SwaggerUI調試下接口吧
好了,今天的在ASP.NET Core WebApi使用Swagger生成api說明文檔看這篇就夠了的教程就到這裏了。但願可以對你們學習在ASP.NET Core中使用Swagger生成api文檔有所幫助!
本文從手工書寫api文檔的痛處提及,進而引出Swagger這款自動生成api說明文檔的工具!而後經過通俗易懂的文字結合圖片爲你們演示瞭如何在一個ASP.NET Core WebApi中使用SwaggerUI生成api說明文檔。最後又爲你們介紹了一些ASP.NET Core 中Swagger的一些高級用法!但願對你們在ASP.NET Core中使用Swagger有所幫助!