ASP.NET Core 3.1 系列之 Web API 自动生成接口文档 Swagger 使用教程

ASP.NET Core 3.1 系列之 Web API 中间件篇 (四)

接口文档自动生成(Swagger) 使用教程

Swagger (OpenAPI) 是一个与语言无关的规范,用于描述 REST API。 它使计算机和用户无需直接访问源代码即可了解 REST API 的功能。

添加NuGet 包

包名称:Swashbuckle.AspNetCore

在这里插入图片描述

修改 Startup.cs 配置

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddSwaggerGen(); //添加Swagger
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
         app.UseDeveloperExceptionPage();
    }

    app.UseSwagger(); //启用Swagger
    //访问地址 http://localhost:5000/swagger/index.html
    app.UseSwaggerUI(); //启用Swagger UI页面

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
         endpoints.MapControllers();
    });
}

到此所有配置完成,启动应用程序,访问http://localhost:5000/swagger/index.html

在这里插入图片描述

高级使用

1.如何显示控制器注释

鼠标->项目右键->属性

在这里插入图片描述
修改 Startup.cs

services.AddSwaggerGen(c =>
{
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    c.IncludeXmlComments(xmlPath, true); //true 显示控制器级别注释
});

2.如何显示更多接口描述信息

在这里插入图片描述
接口方法添加如下代码

/// <summary>
/// 测试方法
/// </summary>
/// <remarks>
/// 提交参数说明:
///
///     POST
///     {
///        "id": 主键ID,
///        "name": "用户姓名",
///        "pwd": "密码"
///     }
///
/// </remarks>
/// <returns></returns>
[HttpGet("GetHangfireTest")]
public IActionResult GetHangfireTest()
{
    BackgroundJob.Enqueue(() => Console.WriteLine("队列任务"));

    BackgroundJob.Schedule(() => Console.WriteLine("延后2分钟"), TimeSpan.FromMinutes(2));

    RecurringJob.AddOrUpdate(() => Console.WriteLine("每分钟执行一下"), Cron.Minutely());

    return Ok();
}

3.如何自定义Swagger访问地址

修改 Startup.cs

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "我的测试API");
    c.RoutePrefix = "mytest/openapi"; //自定义访问路由
});

访问地址变更为:http://localhost:5000/mytest/openapi/index.html

4.如何自定义Swagger 文档标题等其他描述信息

修改 Startup.cs

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "测试API大标题",
        Description = "测试API详细描述信息",
    });

    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    c.IncludeXmlComments(xmlPath, true);
});

5.如何添加多个Swagger 文档

修改 Startup.cs

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo
    {
         Title = "测试API大标题",
         Description = "测试API详细描述信息",
    });

    c.SwaggerDoc("v2", new OpenApiInfo
    {
         Title = "测试API大标题2",
         Description = "测试API详细描述信息2",
    });

    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    c.IncludeXmlComments(xmlPath, true);
});
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "我的测试API");
    c.SwaggerEndpoint("/swagger/v2/swagger.json", "我的测试API2");
    c.RoutePrefix = "mytest/openapi";
});

效果如下

在这里插入图片描述

6.如何添加 Jwt 登陆认证

添加NuGet包:Swashbuckle.AspNetCore.Filters

在这里插入图片描述
修改 Startup.cs

services.AddSwaggerGen(c =>
{
     c.SwaggerDoc("v1", new OpenApiInfo
     {
           Title = "测试API大标题",
           Description = "测试API详细描述信息",
     });

     c.SwaggerDoc("v2", new OpenApiInfo
     {
           Title = "测试API大标题2",
           Description = "测试API详细描述信息2",
     });

     var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
     c.IncludeXmlComments(xmlPath, true);
     
     //以下下是Jwt配置
     c.OperationFilter<AddResponseHeadersFilter>();
     c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
     c.OperationFilter<SecurityRequirementsOperationFilter>();
     c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
     {
           Description = "Bearer {token}",
           Name = "Authorization",
           In = ParameterLocation.Header,
           Type = SecuritySchemeType.ApiKey
     });
});

实现效果如下

在这里插入图片描述

Swagger 官网

更多中间件使用教程

【身份验证(Jwt)使用教程 】

【日志(Log4Net)使用教程 】

【后台定时任务(Hangfire)使用教程】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: .NET Core 3.1 Web API 项目框架是一个用于构建基于RESTful风格的Web API的开发框架。它是.NET Core平台的一部分,可以运行在多个操作系统上,如Windows、Linux和MacOS。以下是该框架的一些主要特点: 1. 跨平台:.NET Core 3.1 Web API可以在多个操作系统上运行,这为开发人员带来了更大的灵活性和便利性。 2. 高性能:.NET Core是一个高性能的框架,可以处理大量的并发请求。它经过优化,能够提供快速响应时间和较低的资源消耗。 3. 轻量级:相比于传统的.NET框架,.NET Core是一个更轻量级的框架。它采用了模块化体系结构,可以选择性地引用和使用需要的组件,减少了部署包的大小。 4. 开放性:.NET Core 3.1 Web API是一个开放的框架,可以与其他平台和技术进行无缝集成。它支持多种数据格式和协议,如JSON、XML、RESTful和WebSocket等。 5. 高度可扩展:通过使用中间件和自定义管道,开发人员可以方便地扩展和定制Web API的功能。它还支持依赖注入和插件机制,使得代码的组织和测试变得更加简单。 6. 安全性:.NET Core 3.1 Web API提供了强大的安全性功能,包括身份验证、授权、访问控制等。它支持常见的认证方案,如基于令牌的身份验证和OAuth。 总之,.NET Core 3.1 Web API是一个现代化、高效且可扩展的框架,适用于构建各种规模的Web API应用程序。它简化了开发过程,提供了丰富的功能和工具,帮助开发人员快速构建高质量的API。 ### 回答2: .NET Core 3.1 Web API项目框架是用于构建基于RESTful风格的Web服务的开发框架。它是在跨平台、高性能和可扩展性方面进行了优化的框架。 .NET Core 3.1是一个开源的、跨平台的框架,可以在Windows、Linux和Mac等多个操作系统上运行。这意味着我们可以使用相同的代码和工具来构建应用程序,无需为不同的操作系统创建额外的代码。 Web API是一种使用HTTP协议提供数据交互的应用程序编程接口。它通过HTTP请求(通常是GET、POST、PUT、DELETE)来处理数据,并返回JSON或XML等数据格式作为响应。Web API是一种通用的服务架构,可以与不同平台上的客户端应用程序进行通信。 在.NET Core 3.1 Web API项目框架中,我们可以使用C#来编写API控制器,通过定义不同的API端点和路由来处理不同类型的请求。我们可以使用一些常用的属性(如[HttpGet]、[HttpPost]等)来定义API端点,并使用参数绑定来获取请求中的数据。 框架还提供了丰富的中间件和插件,以处理身份验证、授权、日志记录等常见的开发需求。我们还可以通过使用依赖注入来管理应用程序中的组件和服务。 另外,.NET Core 3.1框架还提供了一些实用的工具和库,例如Entity Framework CoreSwagger等,可以简化数据库访问和API文档生成等任务。 总之,.NET Core 3.1 Web API项目框架是一个强大、灵活和高效的开发框架,可以帮助我们构建出高性能和可靠的Web服务。它具有跨平台的优势,并提供了丰富的功能和工具来简化开发流程。 ### 回答3: .NET Core 3.1是一个跨平台的开发框架,适用于构建不同类型应用的云和互联网解决方案。在.NET Core 3.1中,WebAPI项目框架也得到了重要的改进和功能增强。 首先,.NET Core 3.1WebAPI项目框架提供了更强大的路由功能,可以使用属性路由来定义API的访问路径,从而更灵活地组织和管理API的接入点。 其次,.NET Core 3.1WebAPI项目框架引入了端点路由的概念,可以根据不同的HTTP方法和路由规则来映射到不同的动作方法,从而实现更细粒度的控制。 此外,.NET Core 3.1WebAPI项目框架还提供了更强大的模型绑定功能,可以将请求的数据自动绑定到动作方法的参数上,大大减少了编写冗余代码的工作量。 在数据序列化方面,.NET Core 3.1WebAPI项目框架支持多种数据格式,包括JSON和XML,可以根据客户端的需求选择合适的数据格式进行传输。 此外,.NET Core 3.1WebAPI项目框架还提供了强大的中间件支持,可以实现各种功能,如身份验证、授权、异常处理等,极大地提高了开发效率。 总体来说,.NET Core 3.1WebAPI项目框架在路由、模型绑定、数据序列化和中间件方面都得到了重要的改进和增强,为开发者提供了更强大、更灵活的开发工具,使得构建高性能、可扩展的WebAPI应用变得更加简单和方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁程序员有话说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值