「NSwag」是 .net 下的描述 OpenAPI 好用工具

一、介紹

NSwag 是一個 .net.net core 下的 Swagger / OpenAPI 2.03.0 的工具,使用 JOSN 去描述 RESTful web API

二、Swagger

Swagger 是一個介面描述語言使用 JSON 去描述 RESTful API

三、開發環境

  • 整合開發環境:Visual Studio 2019
  • 語言:C#
  • .net framework:4.6.2

四、Nuget

  • NSwag.AspNet.Owin
  • Microsoft.AspNet.WebApi.Owin

五、操作步驟

圖、建立 TestApiController.cs

  • 原始碼
/// <summary>
/// TestApiController summary
/// </summary>
public class TestApiController : ApiController
{
    /// <summary>
    /// TestApi Get TestVm summary
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpGet]
    public List<string> Get([FromUri]List<string> data) 
    {
        return data;
    }
}

圖、修改 Startup.cs

  • 原始碼
var config = new HttpConfiguration();

app.UseSwaggerUi3(typeof(Startup).Assembly, settings =>
{
    settings.GeneratorSettings.DefaultUrlTemplate = "api/{controller}/{action}/{id?}";
});
app.UseWebApi(config);

config.MapHttpAttributeRoutes();
config.EnsureInitialized();

圖、修改 Web.config

  • 修改 modules
<system.webServer>
    ...
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
  • 修改 handlers,新增 NSwag 設定
<system.webServer>
    ...
    <handlers>
        ...
        <add name="NSwag" path="swagger" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

圖、執行結果

六、完整原始碼

  • TestApiController.cs
/// <summary>
/// TestApiController summary
/// </summary>
public class TestApiController : ApiController
{
    /// <summary>
    /// TestApi Get TestVm summary
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpGet]
    public List<string> Get([FromUri]List<string> data) 
    {
        return data;
    }
}
  • Startup.cs
public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);

        var config = new HttpConfiguration();

        app.UseSwaggerUi3(typeof(Startup).Assembly, settings =>
        {
            settings.GeneratorSettings.DefaultUrlTemplate = "api/{controller}/{action}/{id?}";
        });
        app.UseWebApi(config);

        config.MapHttpAttributeRoutes();
        config.EnsureInitialized();
    }
}

七、相關連結

  1. 在「Visual Studio 2019 」使用 「NuGet」 安裝第三方套件
  2. 使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站

八、參考

  1. NSwag
  2. Middlewares
  3. OWIN-Middleware

留言

這個網誌中的熱門文章

使用「LINE Messaging API」發送 line 訊息

使用「Visual Studio 2019」建置 Windows 服務

使用「NLog」來記錄應用程式的大小事吧

「linqkit」動態組裝 LINQ 條件的好用套件

使用 Visual Studio 2019 實作「RESTful API」

「Katalon Recorder」簡化測試腳本撰寫的工具

如何傳送訊息至「Teams」的 Channel

asp.net 下的 JSON 套件最佳利器「Newtonsoft.Json」

「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行