net core 3.1 swagger文檔添加 不用xml配置

使用特性來描述接口而不是xml文件,使用特性可自定義接口在swaggerUI上的描述
安裝nuget包:Swashbuckle.AspNetCore.SwaggerUI和Swashbuckle.AspNetCore.Annotations,配置swagger:

1 public void ConfigureServices(IServiceCollection services)
2 {
3 services.Configure(Configuration); 4
5
6 #region 添加Swagger
7 services.AddSwaggerGen(opt=> {
8 opt.SwaggerDoc(swaggerDocName, new OpenApiInfo() { Version="v1",Title="watch api",Description="watch"});
9 //使用annotation來描述接口 不依賴xml文件
10 opt.EnableAnnotations();
11
12 // 下面兩句,將swagger文檔中controller名使用GroupName替換
13 // 在Swagger中,一個Tag可以看作是一個API分組
14 opt.DocInclusionPredicate((_, apiDescription) => string.IsNullOrWhiteSpace(apiDescription.GroupName) == false);
15 opt.SwaggerGeneratorOptions.TagsSelector = (apiDescription) => new[] { apiDescription.GroupName };
16
17 });
18
19 #endregion
20
21 services.AddControllers();
22
23
24
25
26
27 }

使用上面注入好的swagger

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
#region Swagger
app.UseSwagger(opt =>
{
// 相對路徑加載swagger文檔
//opt.RouteTemplate = "swagger/{documentName}";
})
.UseSwaggerUI(opt =>
{
opt.SwaggerEndpoint($"{swaggerDocName}/swagger.json", "watch API文檔");
});
#endregion
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}

Controller和Action上使用特性:ApiExplorerSettings和SwaggerOperation:

namespace WatchApi.Controllers
{
[ApiExplorerSettings(GroupName = "品牌")]
[Route("[controller]/[action]")]
[ApiController]
public class pinpaiController : ControllerBase
{
private readonly IMapper _mapper;
private readonly IpinpaiService _pinpaiserver;
public pinpaiController(IpinpaiService pinpaiserver, IMapper mapper)
{
_pinpaiserver = pinpaiserver;
_mapper = mapper;
}
[SwaggerOperation(Summary = "獲取列表")]
[HttpGet]
public ResponseModel> Get()
{
var resModel = _pinpaiserver.GetListpinpai();
return ResponseModel.Succeed>(resModel);
}
[SwaggerOperation(Summary = "添加商品")]
[HttpPost,Authorize]
public ResponseModel Add(pinpai pinpaiobj)
{
//pinpaiRequest obj
//var pinpaiobj1 = _mapper.Map(pinpaiobj);
var result = _pinpaiserver.Addpinpai(pinpaiobj);
if (result)
{
return ResponseModel.Succeed();
}
else
{
return ResponseModel.Failed();
}
}
[HttpPost]
public ResponseModel<string> Add1([FromForm] string name)
{
return ResponseModel.Succeed(name);
}
}
}

訪問https://localhost:5001/swagger/index.html? ?換成自己的調(diào)試鏈接
效果圖如下

【推薦】.NET Core開發(fā)實戰(zhàn)視頻課程?★★★
.NET Core實戰(zhàn)項目之CMS 第一章 入門篇-開篇及總體規(guī)劃
【.NET Core微服務實戰(zhàn)-統(tǒng)一身份認證】開篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個接口多種實現(xiàn)的依賴注入與動態(tài)選擇看這篇就夠了
用abp vNext快速開發(fā)Quartz.NET定時任務管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務輕松實現(xiàn)作業(yè)調(diào)度
評論
圖片
表情
