Startup.cs
下ConfigureServices
代码
这里主要在DocInclusionPredicate
控制输出那些api。
Startup.cs
下Configure
代码
给Controllers
或Action
添加[ApiExplorerSettings(GroupName= "ApiGroupName")]
ApiGroupAttribute
若不想使用Microsoft.AspNetCore.Mvc
下的ApiExplorerSettingsAttribute
,可以自己建一个ApiGroupAttribute
。
请将上面代码中的ApiExplorerSettingsAttribute
替换为ApiGroupAttribute
,ApiExplorerSettings
替换为ApiGroup
。
ApiGroupAttribute
代码如下
效果
若不使用[ApiExplorerSettings(GroupName= "GroupName")]
api将在V1
显示。
其他
swagger
通过输出json如:“swagger/{documentName}/swagger.json
“ 显示Api
文档,我们可以自己编写解析json以实现自己的api文档UI。
.Net Core WebApi 之 Swagger
配置多个测试页面
问题:
一个项目里会有比较多的WebApi
,不想放到一个测试页面中,希望可以分组。
解决:Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 注册Swagger服务
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "My Demo API",
Version = "v1.0",
Description = "My Demo API"
}
);
c.SwaggerDoc("v2", new OpenApiInfo
{
Version = "v1.0",
Title = "基础接口",
Description = "用户登录认证接口"
});
c.IncludeXmlComments(System.IO.Path.Combine(System.AppContext.BaseDirectory, "ZhiKeCore.API.xml"));
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
//c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "My Demo API (V 1.0)");
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My Demo API");
c.SwaggerEndpoint("/swagger/v2/swagger.json", "设备集成接口");
});
}
写具体的WebApi
需设置分组:以下代码表示设置在v2
设备集成接口那个测试页中
[ApiExplorerSettings(GroupName = "v2")]
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
效果见下图: