如何使用webapi集成swagger

  如今B/S開發中,先後端分離無疑已經成爲一種新的時尚,可是如何把後端開發的接口更好的提供給前段開發呢?還用接口文檔?low了吧。不只要花時間開發接口,還得花時間寫文檔,白花花的時間不久浪費了嗎。若是接口須要調整,還得改文檔,這效率不用說了,確定夠嗆。今兒思明和你們分享一篇可視化webapi接口開發,就是去集成swagger。web

  先來簡單介紹一下:Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。整體目標是使客戶端和文件系統做爲服務器以一樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,容許API來始終保持同步。Swagger 讓部署管理和使用功能強大的API從未如此簡單。後端

     下面介紹一下具體實現過程:api

一、新建一個項目aps.net web 應用程序服務器

二、選擇 empty-->核心引用選擇 MVC和web apiapp

三、選擇新建的項目右擊,在菜單中選擇NuGet程序包 左側選擇聯機,右側輸入框輸入swagger框架

選擇其中的 Swashbuckle 和Swagger UI for .NET兩個安裝前後端分離

四、右擊項目選擇菜單屬性 --> 選擇生成 --> 選擇輸出xml文檔文件,並輸入不帶多餘.的文件名ui

 

五、把剛剛的文件名配置到 文件夾app_start中的 SwaggerConfig.cs 以下:spa

c.IncludeXmlComments(string.Format("{0}/bin/SelfSwaggerApi.XML", System.AppDomain.CurrentDomain.BaseDirectory));

 六、刪除多餘無用的項.net

七、在文件夾Controllers中新建一個 Web API 控制器類

八、直接運行。http://localhost:16650/swagger/ui/index 結果以下:

 

九、有些人不想直接運行vs就能夠自動跳轉到 http://localhost:16650/swagger/ui/index 。也是能夠的;以下:

在控制器中新增一個控制器 HomeController

using System.Web.Mvc;

namespace SelfSwaggerApi.Controllers
{
    public class HomeController : Controller
    {
        /// <summary>
        /// swagger 首頁
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            return Redirect("/Swagger/ui/index");
        }
    }
}

  而後直接運行。。就是見證奇蹟的時刻。

 

備註:常見問題

未能加載文件或程序集「System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35」或它的某一個

緣由分析:程序所依賴的dll 和實際引用的dll不相符,能夠用修改配置文件web.config的方式實現兼容

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31BF3856AD364E35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  齊活。碼字不容易,轉載請備註出處,博客園思明奉上