1、Swashbuckle包含三个主要组件
1) Swashbuckle.AspNetCore.Swagger:Swagger
对象模型和中间件,用于将SwaggerDocument
对象公开为JSON端点。
2) Swashbuckle.AspNetCore.SwaggerGen:一个Swagger
生成器,可SwaggerDocument
直接从您的路线,控制器和模型构建对象。它通常与Swagger
端点中间件结合使用,以自动公开Swagger JSON
。
3) Swashbuckle.AspNetCore.SwaggerUI:Swagger UI
工具的嵌入式版本。它解释Swagger JSON
来构建丰富的,可定制的体验,以描述Web API功能。它包括用于公共方法的内置测试工具。
2、安装引用Swashbuckle
1)使用Nuget界面管理器
搜索"Swashbuckle.AspNetCore"
,在列表中找到它,点击"安装"
相关文档:VS(Visual Studio)中Nuget的使用
2)使用Package Manager命令安装
PM> Install-Package Swashbuckle.AspNetCore -Version 5.0.0
3)使用.NET CLI命令安装
> dotnet add TodoApi.csproj package Swashbuckle.AspNetCore -v 5.0.0
3、配置Swashbuckle(Swagger中间件)
1) 在Startup中,导入以下名称空间以使用OpenApiInfo类:
using Microsoft.OpenApi.Models;
2) 在Startup.ConfigureServices方法中将Swagger生成器添加到服务集合:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TodoContext>(opt =>
opt.UseInMemoryDatabase("TodoList"));
services.AddControllers();
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
}
3) 在该Startup.Configure方法中,启用用于提供生成的JSON文档和Swagger UI的中间件:
public void Configure(IApplicationBuilder app)
{
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
前面的UseSwaggerUI
方法调用启用了“ 静态文件中间件”。如果目标是.NET Framework或.NET Core 1.x,则将Microsoft.AspNetCore.StaticFiles NuGet程序包添加到项目中。
启动应用程序,然后导航到http://localhost:/swagger/v1/swagger.json
。生成的描述端点的文档如所示Swagger规范(swagger.json)
Swagger用户界面位于http://localhost:/swagger
。通过Swagger UI
探索API,并将其合并到其他程序中。
注意:
要在应用程序的根目录(http://localhost/)
提供Swagger UI ,请将RoutePrefix
属性设置为空字符串:
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
});
如果将目录与IIS或反向代理一起使用,请使用./
前缀将Swagger
端点设置为相对路径。例如,./swagger/v1/swagger.json
。使用/swagger/v1/swagger.json
指示应用程序在URL的真实根目录下查找JSON
文件(如果使用,则加上路由前缀(RoutePrefix))。例如,使用http://localhost://swagger/v1/swagger.json
代替http://localhost:///swagger/v1/swagger.json
。
相关文档:
ASP.NET Core Web API Swagger/OpenAPI Swashbuckle.AspNetCore NSwag介绍