程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 使用swagger實現web api在線接口文檔,swaggerapi

使用swagger實現web api在線接口文檔,swaggerapi

編輯:關於.NET

使用swagger實現web api在線接口文檔,swaggerapi


一、前言

  通常我們的項目會包含許多對外的接口,這些接口都需要文檔化,標准的接口描述文檔需要描述接口的地址、參數、返回值、備注等等;像我們以前的做法是寫在word/excel,通常是按模塊劃分,例如一個模塊包含n個接口,就形成一個文檔,然後再用版本控制管理。這樣做的缺點是:

1.不夠直觀,每次打開文檔查看接口很麻煩

2.文檔的維護難度大

3.調用方和測試人員使用麻煩,需要先去找接口,在用相應的工具測試(例如使用浏覽器還可能要安裝插件)

  我們希望是可以直接在線浏覽,然後直接用浏覽器測試。而接口的詳細描述都在程序裡用注釋完成。swagger就可以完成這個工作(ps好像很多開發人員都還不知道這個東西。。。)。

二、使用Swagger

  Swagger 是一款RESTFUL接口的文檔在線自動生成+功能測試功能軟件。

  在web api 使用swagger可以說非常簡單,不需要編寫任何代碼,完全依賴於插件。具體步驟如下:

    1.新建一個web api項目

  

  2.使用nuget添加Swashbuckle包

  

  3.完成

  沒錯,就是這麼簡單!運行項目,轉到地址 http://localhost:57700/swagger/ui/index 會看到如下頁面,這是默認添加的兩個apicontroller:  

  這個時候接口還沒有具體的描述信息等,例如我們給ValuesController.Get添加注釋描述,在頁面上還是沒有顯示出來。需要按照如下步驟實現:

  1. 在app_start 下 SwaggerConfig 大100行的位置找到 //c.IncludeXmlComments(GetXmlCommentsPath()); 如下注釋,改為:c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name)); (注意去掉注釋了)

  2. 在SwaggerConfig添加一個方法代碼:

        protected static string GetXmlCommentsPath(string name)
        {
            return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
        }

  3. 修改項目生成,在bin下對應的xml文件可以看到具體的描述文檔,如下:

  

  重新生成項目,就要可以看到完整的接口描述了。例如我們心中一個TestController如下:

    /// <summary>
    /// 測試控制器
    /// </summary>
    public class TestController : ApiController
    {
        /// <summary>
        /// 測試Get方法
        /// </summary>
        /// <remarks>測試Get方法</remarks>
        /// <returns></returns>
        [HttpGet]
        public string Get()
        {
            return "Get";
        }

        /// <summary>
        /// 測試Post方法
        /// </summary>
        /// <param name="name">姓名</param>
        /// <param name="age">年齡</param>
        /// <remarks>測試Post方法</remarks>
        /// <returns></returns>
        [HttpPost]
        public string Post(string name, int age)
        {
            return name + age.ToString();
        }
    }

  生成的頁面如下,可以看到接口的描述,點擊Try it out 即可調用:

  

三、非依賴代碼

  上面的方式依賴於Swashbuckle包,它已經包含了Swagger-UI組件。我們的代碼需要引入這個包,實際上也可以不需要在項目中引入,單獨部署Swagger,包括Swagger-Ui(api展示) 和 Swagger-Editor(在線編輯器),它需要依賴nodejs環境,所以需要先按照nodejs。部署其實也很簡單,例如這是我部署的結果:

  swagger-editor:  

  swagger-ui:

  編輯後只需要將文件保存為json文件,然後拷貝到指定的目錄即可。這個部署也非常簡單,具體可以參照:

  1.http://www.raye.wang/2016/09/29/swaggerhuan-jing-da-jian-zhi-fei-yi-lai-dai-ma-fa/?utm_source=tuicool&utm_medium=referral

  2.http://blog.csdn.net/ron03129596/article/details/53559803

四、總結

  規范化api的編寫和注釋,以及標准化文檔,對於團隊的開發效率有很大的提升,也有利於項目的維護。例如使用在線接口文檔後,測試人員測試只需要在頁面輸入參數,點擊調用就可以看到調用結果。

  swagger 也有在線版的,不需要要自己部署。實際上非代碼依賴的方式反而更麻煩,使用代碼依賴的方法可以像平時我們寫注釋一樣就可以,既能在程序裡描述,方便開發人員了解接口功能,也可以在在線展示,發布調用方和測試人員調用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved