天天看點

.Net項目使用SwaggerSwagger簡述

.Net項目使用Swagger

  • Swagger簡述
    • 項目引用
    • 配置Swagger
    • 生成項目
    • 官方文檔:

Swagger簡述

Swagger (OpenAPI) 是一個與語言無關的規範,用于描述 REST API。 它使計算機和使用者無需直接通路源代碼即可了解 REST API 的功能。 
Swagger 項目已于 2015 年捐贈給 OpenAPI 計劃,自此它被稱為 OpenAPI。 這兩個名稱可互換使用。 不過,“OpenAPI”指的是規範。 “Swagger”指的是來自使用 OpenAPI 規範的 SmartBear 的開放源代碼和商業産品系列。
           

.NET 的兩個主要 OpenAPI 實作是 Swashbuckle 和 NSwag

本文章項目使用的是Swashbuckle來進行的操作,NSwag有一系列生成代碼的功能,感興趣的可以去看看官方文檔

項目引用

從“管理 NuGet 程式包”對話框中:

右鍵單擊“解決方案資料總管” > “管理 NuGet 包”中的項目

在搜尋框中輸入“Swashbuckle.AspNetCore”

從“浏覽”頁籤中選擇最新的“Swashbuckle.AspNetCore”包,然後單擊“安裝”

沒有swaggerGen還需要安裝"Swashbuckle.AspNetCore.SwaggerGen"

.Net項目使用SwaggerSwagger簡述

配置Swagger

将 Swagger 添加到 Startup.ConfigureServices 方法中的服務集合中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
        //注冊Swagger生成器
            services.AddSwaggerGen(config =>
            {
                config.SwaggerDoc("v1", new OpenApiInfo { Title = "SimpleBlog.WebApi", Version = "v1" });
                // 為 Swagger JSON and UI設定xml文檔注釋路徑
                var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//擷取應用程式所在目錄(絕對,不受工作目錄影響,建議采用此方法擷取路徑)
                var xmlPath = Path.Combine(basePath, "SimpleBlog.xml");//接口action顯示注釋
                //var xmlPath_entity = Path.Combine(basePath, "實體類庫.xml");//分層實體顯示注釋
                config.IncludeXmlComments(xmlPath);
                //config.IncludeXmlComments(xmlPath_entity);
            });
}
           

在 Startup.Configure 方法中,添加為生成的 JSON 文檔和 Swagger UI 提供服務的中間件

//使中間件能夠将生成的Swagger作為JSON端點。
            app.UseSwagger();
            //使中間件服務于swagger ui
            app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                  //在應用根目錄(localhost:<port>/)處提Swagger UI,根據需求決定
                  c.RoutePrefix = string.Empty;
              });
           

生成項目

啟動項目可以在

http://localhost:/swagger/v1/swagger.json 通路swagger檔案

http://localhost:/swagger 通路swaggerUI

配置了根目錄通路可以直接http://localhost:通路

啟動沒有通路到json檔案可以 在項目上右鍵–屬性–生成–輸出–XML文檔檔案上打√

一個簡單的swagger 配置就完成了,更多進階歡迎大家加群溝通交流

.Net項目使用SwaggerSwagger簡述

官方文檔:

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-3.1