标签:WebApi Core app ApiGroupAttribute json API dotNet swagger
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
效果见下图:
标签:WebApi,Core,app,ApiGroupAttribute,json,API,dotNet,swagger 来源: https://blog.csdn.net/WuLex/article/details/120175115
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。