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项目中使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
推荐阅读
-
ASP.NET怎么实现登出系统并清除Cookie
-
CentOS下怎么实现Mono和Asp.net
CentOS下怎么实现Mono和Asp.net这篇文章主要介绍“C...
-
ASP.NET的Core AD域登录过程怎么实现
ASP.NET的Core AD域登录过程怎么实现本文小编为大家详细...
-
ASP.NET MVC中两个配置文件的作用是什么
-
ASP.NET MVC过滤器执行顺序是什么
-
ASP.NET Core Zero模块系统的示例分析
ASP.NET Core Zero模块系统的示例分析这篇文章主要为...
-
asp.net多级分类统计列表怎么实现
asp.net多级分类统计列表怎么实现本篇内容介绍了“asp.ne...
-
C#怎么用ASP.NET Core开发学生管理系统
-
ASP.net中aspx与cs函数怎么实现互调
ASP.net中aspx与cs函数怎么实现互调,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇...
-
ASP.NET中怎么优化站点构建托管资源
这篇文章将为大家详细讲解有关ASP.NET中怎么优化站点构建托管资源,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完...