天天看点

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

作者:IT技术资源爱好者

本项目使用的一些框架如下:

Swagger,Serilog,Sqlugar,CSRedis,Autofac

具体配置将会在后续逐一介绍

1、首先我们对项目进行引用,右键.NET6.Api项目依赖项,选择添加项目引用,勾选NET6.Domain和NET6.Infrastructure,使用相同的方法为NET6.Infrastructure添加NET6.Domain引用。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

2、打开Nuget,搜索安装Swashbuckle.AspNetCore。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

3、由于swagger是基于xml文件来加载文档,所以我们要启用项目的xml,分别右键NET.Api和NET.Domain,选择属性,找到生成→输出,勾选生成包含Api文档的文件。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

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便出现在我们眼前。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

6、swagger搭建成功,但是还没有任何显示,接下来我们新增控制器。我们先创建一个BaseController,用于实现一些通用的功能。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

7、修改BaseController继承于ControllerBase,删掉其中的Index方法,为BaseController添加类注释,并添加[Authorize]和[ApiController]标记。

基于.NET6平台开发WebApi(二)—— 添加Swagger支持

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");
        }
    }
}
           
基于.NET6平台开发WebApi(二)—— 添加Swagger支持
基于.NET6平台开发WebApi(二)—— 添加Swagger支持