(一)回顧:
上一篇為大家介紹了在.NET Core中如何內建Swagger的介紹,想想內建操作其實非常簡單便捷,實質就三個步驟:
(1)在項目中執行nuget指令,拉取Swagger包到項目:Install-package Swashbuckle.AspNetCore
(2)在ConfigureServices方法中新增如下代碼
#region Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1.1.0",
Title = "Swagger WebAPI",
Description = "XXX項目API文檔",
TermsOfService = "None",
Contact = new Swashbuckle.AspNetCore.Swagger.Contact
{
Name = "XXX項目",
Email = "[email protected]"
,
Url = "https://www.cnblogs.com/NBIDataVis/"
}
});
// 為 Swagger JSON and UI設定xml文檔注釋路徑
var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
var xmlPath = Path.Combine(basePath, "CoreWebAPI.xml");
//如果需要顯示控制器注釋隻需将第二個參數設定為true
c.IncludeXmlComments(xmlPath, true);
});
#endregion
(3)在Configure方法中新增如下代碼
#region Swagger
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiDocument V1");
});
#endregion
(二)問題:
通常一個項目中有很多的功能子產品,每個功能子產品又可能對應很多的接口,如果所有的接口都在一個清單顯示,顯然是比較混亂的,不便于調用方閱讀和查找。
當然Swagger為我們已經考慮到了這一點,它能支援分組顯示,具體怎麼做呢,請看下面的配置:
(三)Swagger分組文檔配置:
(1)在ConfigureServices方法中新增如下代碼
#region Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1.1.0",
Title = "Swagger WebAPI",
Description = "XXX項目API文檔",
TermsOfService = "None",
Contact = new Swashbuckle.AspNetCore.Swagger.Contact
{
Name = "XXX項目",
Email = "[email protected]"
,
Url = "https://www.cnblogs.com/NBIDataVis/"
}
});
c.SwaggerDoc("User", new Info { Title = "使用者子產品", Version = "User" }); //分組顯示
c.SwaggerDoc("Project", new Info { Title = "項目子產品", Version = "Project" }); //分組顯示
var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
var xmlPath = Path.Combine(basePath, "CoreWebAPI.xml");
c.IncludeXmlComments(xmlPath, true);
});
#endregion
(2)在Configure方法中新增如下代碼
#region Swagger
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
c.SwaggerEndpoint("/swagger/User/swagger.json", "使用者子產品"); //分組顯示
c.SwaggerEndpoint("/swagger/Project/swagger.json", "項目子產品"); //分組顯示
});
#endregion
(3)在Controller類上指定分組名:
(4)看看運作效果: