本項目使用的一些架構如下:
Swagger,Serilog,Sqlugar,CSRedis,Autofac
具體配置将會在後續逐一介紹
1、首先我們對項目進行引用,右鍵.NET6.Api項目依賴項,選擇添加項目引用,勾選NET6.Domain和NET6.Infrastructure,使用相同的方法為NET6.Infrastructure添加NET6.Domain引用。
2、打開Nuget,搜尋安裝Swashbuckle.AspNetCore。
3、由于swagger是基于xml檔案來加載文檔,是以我們要啟用項目的xml,分别右鍵NET.Api和NET.Domain,選擇屬性,找到生成→輸出,勾選生成包含Api文檔的檔案。
4、打開Program.cs,添加如下代碼
var basePath = AppContext.BaseDirectory;
#region 添加swagger注釋
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v1",
Title = "Api"
});
var xmlPath = Path.Combine(basePath, "NET6.Api.xml");
c.IncludeXmlComments(xmlPath, true);
var xmlDomainPath = Path.Combine(basePath, "NET6.Domain.xml");
c.IncludeXmlComments(xmlDomainPath, true);
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "Value: Bearer {token}",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
},Scheme = "oauth2",Name = "Bearer",In = ParameterLocation.Header,
},new List<string>()
}
});
});
#endregion
#region 啟用swaggerUI
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
c.RoutePrefix = string.Empty;
c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
c.DefaultModelsExpandDepth(-1);
});
#endregion
5、編譯運作,swagger便出現在我們眼前。
6、swagger搭建成功,但是還沒有任何顯示,接下來我們新增控制器。我們先建立一個BaseController,用于實作一些通用的功能。
7、修改BaseController繼承于ControllerBase,删掉其中的Index方法,為BaseController添加類注釋,并添加[Authorize]和[ApiController]标記。
8、新增AddressController,繼承于BaseController,添加如下代碼,編譯運作,一個最簡單的接口便成功傳回。
using Microsoft.AspNetCore.Mvc;
namespace NET6.Api.Controllers
{
/// <summary>
/// 位址相關接口
/// </summary>
[Route("address")]
public class AddressController : BaseController
{
/// <summary>
/// 清單
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult List()
{
return Ok("Hellow World");
}
}
}