.Net Core 3.1瀏覽器后端服務(三) Swagger引入與應用


一、前言

前后端分離的軟件開發方式已逐步成為互聯網項目開發的業界標准,前后端分離帶來了諸多好處的同時,也帶來了一些弊端。

接口文檔的維護就是其中之一,起初前后端約定文檔規范,開發的很愉快,隨着時間推移、版本迭代、接口更改,接口文檔維護越來越麻煩。

相信很多前端開發者(請求方)都遇到過實際請求與接口文檔不一致的問題

后端開發者(接口提供方)因為時間問題經常來不及更新。
所以僅僅只通過強制來規范大家是不夠的,此時Swagger應運而生

什么是Swagger?

Swagger是一個強大的接口文檔自動生成工具。

二、引入Swagger包

在Package Manager Console輸入如下命令

Install-Package Swashbuckle.AspNetCore -Version 6.0.7

或者在MWebAPI項目右鍵

 

 

選擇最新版本Install,安裝完成后添加Swagger服務注入及中間件配置

在Startup類的ConfigureServices方法中添加服務注入:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo {Title = "Net Core API", Version = "v1"});
});

在Startup類的Configure方法中配置Swagger相關中間件:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Net Core API");
});

F5運行項目

 咦,Swagger文檔並未展示,這是由於默認啟動url未更改

修改launchSetting.json文件中launchUrl如下:

 再次F5運行

預想的SwaggerUI展示出來了

三、添加注釋

1、首先添加文檔說明及作者信息

修改Swagger服務注入部分

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "Net Core API",
        Version = "v1",
        Description = "A simple DotNet core web API sample program",
        Contact = new OpenApiContact
        {
            Name = "Sirius",
            Email = "1247830052@qq.com",
            Url = new Uri("https://www.cnblogs.com/mchao/"),
            Extensions = null,
        },
        License = new OpenApiLicense
        {
            Name = "免費許可",
            Url = new Uri("https://www.cnblogs.com/mchao/"),
            Extensions = null,
        }
    });
});

 運行如下:

2、添加生成Controller的注釋說明

MWebAPI項目右鍵->properties->build->output

 build項目會生成Controller.xml文件及內容(自動創建更新,無需手動維護)

接着在AddSwaggerGen方法中添加文檔路徑

services.AddSwaggerGen(c =>
{var xmlPath = Path.Combine(AppContext.BaseDirectory, "Controller.xml");
    c.IncludeXmlComments(xmlPath, true);
});

運行如下:

 3、添加返回數據的注釋說明

MDto項目右鍵->properties->build->output

接着在AddSwaggerGen方法中添加文檔路徑

services.AddSwaggerGen(c =>
{
    var xmlDtoPath = Path.Combine(AppContext.BaseDirectory, "Dto.xml");
    c.IncludeXmlComments(xmlDtoPath, true);
});

運行

這里有個異常,找不到Dto.xml,目前是這樣處理的,Dto.xml文件屬性 Copy to Outup Direcotry,如哪位道友有其他方案請告知。。。

 再次運行

 可看到Dto的注釋信息

四、Api分組

1、增加分組

在Startup類的ConfigureServices方法中增加doc分組:

c.SwaggerDoc("V2", new OpenApiInfo
{
    Title = "Net Core API V2",
    Version = "V2",
    Description = "A simple DotNet core web API sample program2",
});

在Startup類的Configure方法中增加v2 json路徑

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/V1/swagger.json", "API V1");
    c.SwaggerEndpoint("/swagger/V2/swagger.json", "API V2");
});

2、配置分組

給UserInfoController配置V1組

[ApiExplorerSettings(GroupName = "V1")]
public class UserInfoController : Controller

給HomeController配置V2組

[ApiExplorerSettings(GroupName = "V2")]
public class HomeController : Controller

運行:

五、結語

Swagger還有很多好用功能,比如自定義Swagger模板、Swagger開啟權限驗證等,希望感興趣的道友繼續探索!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM