只有累積,沒有奇蹟

2019年6月20日 星期四

[WEBAPI] 如何設定 Swagger 為預設首頁 Start Page

問題
自己不管是在開發 .NET Framework 或是 .NET Core 專案,只要遇到是 Web API 專案都會安裝 Swagger 來協助測試 API 的動作,只要使用過 Swagger 的開發者都知道啟動專案後第一件事就是要在開啟的頁面網址加上 Swagger,接著在繼續透過 Swagger 頁面進行 API 測試的動作,但每次開啟時就需要在網址上輸入一次也是頗麻煩的,今天就來分享兩種方式可以起始頁面為 swagger 頁面若有問題歡迎提出一起討論或是給予指導。

解決方案
在專案設定中可以調整專案起始的頁面,設定方式如下
專案點擊右鍵 > 選擇 Web > Start Action 部分選擇 Specific Page > 輸入 swagger 
設定完畢後按下存檔,在重新開啟
解決方案- webAPIConfig
如果希望在 Code 裡面做調整的話,則可以在 App_Start 底下的 WebAPIConfig.cs 加入下段程式碼,主要是透過   Swashbuckle.Core  中的 RedirectHandler 類別定義 redirectPath
  1. config.Routes.MapHttpRoute(
  2. name: "swagger_root",
  3. routeTemplate: "",
  4. defaults: null,
  5. constraints: null,
  6. handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));
透過反射來看一下 RedirectHandler 類別內容,主要是繼承 HttpMessageHandler,並透過 rootUrlResolver 與 redirectPath 做到轉頁的功能。
  1. namespace Swashbuckle.Application
  2. {
  3. public class RedirectHandler : HttpMessageHandler
  4. {
  5. private readonly Func<HttpRequestMessage, string> _rootUrlResolver;
  6. private readonly string _redirectPath;
  7.  
  8. public RedirectHandler(Func<HttpRequestMessage, string> rootUrlResolver, string redirectPath)
  9. {
  10. this._rootUrlResolver = rootUrlResolver;
  11. this._redirectPath = redirectPath;
  12. }
  13.  
  14. protected override Task<HttpResponseMessage> SendAsync(
  15. HttpRequestMessage request,
  16. CancellationToken cancellationToken)
  17. {
  18. string uriString = this._rootUrlResolver(request) + "/" + this._redirectPath;
  19. HttpResponseMessage response = HttpRequestMessageExtensions.CreateResponse(request, HttpStatusCode.MovedPermanently);
  20. response.Headers.Location = new Uri(uriString);
  21. TaskCompletionSource<HttpResponseMessage> completionSource = new TaskCompletionSource<HttpResponseMessage>();
  22. completionSource.SetResult(response);
  23. return completionSource.Task;
  24. }
  25. }
  26. }
加入代碼進行編譯後,在重新啟動結果與上述相同首頁都為 swagger 頁面,這裡就不在重複貼首頁


感想
自己過去都是使用第一個方式來設定首頁,今天在與強者同事討論中分享了不同的方法給我,讓我學到了不少,如果有需要的各位也可以自行挑選哪種最適合你,以上如果有問題歡迎提出討論,Happy Coding !
    參考
    How to set Swagger as default start page?

    Related Posts:

    • [WEB API] Swagger - 在 Headers 中新增 API Token 驗證問題 在開發 API 時都會在網站加上 API Token 機制,當收到一個 Request 請求時 API 會驗證 Token 的正確性,確認請求參數中的 Token 是否是有效 / 已授權 / 有沒有過期或是用來當 SSO (Single sign-on) 的使用,驗證無誤後才會進入接口的邏輯處理,目前公司內部 API 專案也有驗證 Token 的設計,之前文章介紹了 Swagger 基本使用… Read More
    • [WEBAPI] 如何設定 Swagger 為預設首頁 Start Page問題 自己不管是在開發 .NET Framework 或是 .NET Core 專案,只要遇到是 Web API 專案都會安裝 Swagger 來協助測試 API 的動作,只要使用過 Swagger 的開發者都知道啟動專案後第一件事就是要在開啟的頁面網址加上 Swagger,接著在繼續透過 Swagger 頁面進行 API 測試的動作,但每次開啟時就需要在網址上輸入一次也是頗麻煩的,今天就來分享兩種方式可以起始頁面為 swagger 頁面,若有問… Read More
    • [WEB API] 使用 Swagger 自動產生 WebAPI 技術文件Swagger 是什麼 以下是 Swagger 官網說明 “ Swagger UI is a collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API “  Swagger 是一個可以將你的 API 接口變成可視化的服務,透過 Swag… Read More
    • [WEBAPI] Swagger - 用 Swashbuckle.Examples 加上有意義的測試數據 問題 Swagger 是一個可以將 WebAPI 快速文件化的套件,產生出來的線上文件除了可以列出 API 詳細資料外還可以直接在網頁上進行測試的動作,對開發者和接 API 的使用者來說十分方便,上一篇文章介紹了 Swagger 基本使用 說明,最近想要在公司內部推廣使用 Swagger 服務,資深同事提到過去有陣子曾經使用過 Swagger 服務,但  每次要使用 API 接口服務時參數 (params)… Read More

    0 意見:

    張貼留言

    Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

    Design by Anders Noren | Blogger Theme by NewBloggerThemes.com