swagger怎么在asp.net core 3.0项目中使用

本篇文章给大家分享的是有关swagger怎么在asp.net core 3.0项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Swagger 基本使用#

swagger 服务注册:

services.AddSwaggerGen(option=>
{
option.SwaggerDoc("sparktodo",newOpenApiInfo
{
Version="v1",
Title="SparkTodoAPI",
Description="APIforSparkTodo",
Contact=newOpenApiContact(){Name="WeihanLi",Email="weihanli@outlook.com"}
});

//includedocumentfile
option.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory,$"{typeof(Startup).Assembly.GetName().Name}.xml"),true);
});

中间件配置:

//EnablemiddlewaretoservegeneratedSwaggerasaJSONendpoint.
app.UseSwagger();
//Enablemiddlewaretoserveswagger-ui(HTML,JS,CSSetc.),specifyingtheSwaggerJSONendpoint
app.UseSwaggerUI(option=>
{
option.SwaggerEndpoint("/swagger/sparktodo/swagger.json","sparktodoDocs");

option.RoutePrefix=string.Empty;
option.DocumentTitle="SparkTodoAPI";
});

为 Swagger 添加 Bearer Token 认证#

services.AddSwaggerGen(option=>
{
//...

//Addsecuritydefinitions
option.AddSecurityDefinition("Bearer",newOpenApiSecurityScheme()
{
Description="Pleaseenterintofieldtheword'Bearer'followedbyaspaceandtheJWTvalue",
Name="Authorization",
In=ParameterLocation.Header,
Type=SecuritySchemeType.ApiKey,
});
option.AddSecurityRequirement(newOpenApiSecurityRequirement
{
{newOpenApiSecurityScheme
{
Reference=newOpenApiReference()
{
Id="Bearer",
Type=ReferenceType.SecurityScheme
}
},Array.Empty<string>()}
});
});

支持多个 ApiVersion#

services.AddApiVersioning(options=>
{
options.AssumeDefaultVersionWhenUnspecified=true;
options.DefaultApiVersion=ApiVersion.Default;
options.ReportApiVersions=true;
});

services.AddSwaggerGen(option=>
{
//...

option.SwaggerDoc("v1",newOpenApiInfo{Version="v1",Title="APIV1"});
option.SwaggerDoc("v2",newOpenApiInfo{Version="v2",Title="APIV2"});

option.DocInclusionPredicate((docName,apiDesc)=>
{
varversions=apiDesc.CustomAttributes()
.OfType<ApiVersionAttribute>()
.SelectMany(attr=>attr.Versions);

returnversions.Any(v=>$"v{v.ToString()}"==docName);
});

option.OperationFilter<RemoveVersionParameterOperationFilter>();
option.DocumentFilter<SetVersionInPathDocumentFilter>();
});

自定义 Api version 相关的 OperationFilter:

publicclassSetVersionInPathDocumentFilter:IDocumentFilter
{
publicvoidApply(OpenApiDocumentswaggerDoc,DocumentFilterContextcontext)
{
varupdatedPaths=newOpenApiPaths();

foreach(varentryinswaggerDoc.Paths)
{
updatedPaths.Add(
entry.Key.Replace("v{version}",swaggerDoc.Info.Version),
entry.Value);
}

swaggerDoc.Paths=updatedPaths;
}
}

publicclassRemoveVersionParameterOperationFilter:IOperationFilter
{
publicvoidApply(OpenApiOperationoperation,OperationFilterContextcontext)
{
//RemoveversionparameterfromallOperations
varversionParameter=operation.Parameters.Single(p=>p.Name=="version");
operation.Parameters.Remove(versionParameter);
}
}

中间件配置:

//EnablemiddlewaretoservegeneratedSwaggerasaJSONendpoint.
app.UseSwagger();
//Enablemiddlewaretoserveswagger-ui(HTML,JS,CSSetc.),specifyingtheSwaggerJSONendpoint
app.UseSwaggerUI(option=>
{
option.SwaggerEndpoint("/swagger/v2/swagger.json","V2Docs");
option.SwaggerEndpoint("/swagger/v1/swagger.json","V1Docs");

option.RoutePrefix=string.Empty;
option.DocumentTitle="SparkTodoAPI";
});

最终 swagger 效果

swagger怎么在asp.net core 3.0项目中使用

swagger怎么在asp.net core 3.0项目中使用

以上就是swagger怎么在asp.net core 3.0项目中使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。

发布于 2021-03-24 01:22:34
收藏
分享
海报
0 条评论
163
上一篇:怎么在python中利用Matplotlib改变坐标轴的默认位置 下一篇:如何在Vue.js中自定义指令
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码