.NET Core中使用Swagger

238 阅读1分钟

1、添加核心NuGet包 Swashbuckle.AspNetCore:

image2021-10-5_14-49-7.png

2、startup中进行配置

- 2.1、注入服务
public void ConfigureServices(IServiceCollection services) { 
//注册Swagger生成器,定义一个Swagger文档 
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "Bingle API", Description = "一个简单的ASP.NET Core Web API", TermsOfService = new Uri("https://www.cnblogs.com/namelessblog/"), Contact = new OpenApiContact { Name = "bingle", Email = string.Empty, Url = new Uri("https://www.cnblogs.com/namelessblog/"), }, License = new OpenApiLicense { Name = "许可证", Url = new Uri("https://www.cnblogs.com/namelessblog/"), } }); //为 Swagger JSON and UI设置xml文档注释路径 
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); if (File.Exists(xmlPath)) { c.IncludeXmlComments(xmlPath); } }); }
- 2.2、注入中间件
//启用中间件服务生成Swagger作为JSON终结点 
app.UseSwagger(); 
//启用中间件以提供用户界面(HTML、JS、CSS等),特别是指定JSON端点 
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); 
//页面头名称 
c.DocumentTitle = "平台API"; 
//页面API文档格式 Full = 全部展开, List = 只展开列表, None = 都不展开 c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.List); 
//c.RoutePrefix = string.Empty; 
});

注意:c.SwaggerDoc的第一个参数 要和 c.SwaggerEndpoint第一个参数 字符串swagger/后面的对应,本例用的是v1

3、api描述文档xml的生成地址和文件名,需要在项目的属性中进行配置,右键项目 -> 属性 -> 生成,如下所示:

image.png 禁止显示警告需要加上1591,忽略属性类名必须加xml注释 image.png

4、在controller中action方法都要指定http请求Post(新增),Put(修改),Delete(删除),Get(查询)中的一个,不然会报错:

http://localhost:19489/swagger/index.html   浏览器F12控制台查看错误原因

image.png

image.png

5、启动!

image.png

6、每次输入/swagger太麻烦,可以设置借助vs进行跳转,如下图加上 "launchUrl": "swagger" :

image.png

7、如果controller继承了自己定义的基类controller,要为自己定义的方法加上NonActionFillter,因为swagger要为每个action添加http mehod

image.png