.Net Core2.1 WebAPI新增Swagger插件详解

 更新时间:2021年9月22日 10:02  点击:1366

说明

Swagger是一个WebAPI在线注解、调试插件,过去我们主要通过手工撰写WebAPI接口的交互文档供前端开发人员或外部开发者,

官网地址:https://swagger.io/。

但是在实际工作中,往往咋们的文档工作通常落后于实际的环境,导致文档和实际接口不一致,前后端开发人员苦不堪言。

Swagger的出现解放了接口文档撰写的麻烦也提高了前后端开发者的工作效率,所谓“工欲善其事,必先利其器 ”。现在让咋们

了解下在.NET Core 2.1下如何实现Swagger。

1、Nuget安装依赖包

 首先Nuget安装Swashbuckle.AspNetCore

打开Nuget控制台(程序包管理控制台),键入下列命令

Install-Package Swashbuckle.AspNetCore

2、添加Swagger中间件

public IServiceProvider ConfigureServices(IServiceCollection services)
 {
  services.Configure<CookiePolicyOptions>(options =>
  {
  // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  options.CheckConsentNeeded = context => true;
  options.MinimumSameSitePolicy = SameSiteMode.None;
  });
 
  services.AddMvc().AddJsonOptions(options =>
  {
  //忽略循环引用
  options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
  //不使用驼峰样式的key
  options.SerializerSettings.ContractResolver = new DefaultContractResolver();
  })
  .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
 
  // Register the Swagger generator, defining 1 or more Swagger documents
  services.AddSwaggerGen(c =>
  {
  c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
  });
  return RegisterAutofac(services);//注册Autofac
 }

引用Swashbuckle.AspNetCore.Swagger,并启用中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  }
  // Enable middleware to serve generated Swagger as a JSON endpoint.
  app.UseSwagger();
  // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
  // specifying the Swagger JSON endpoint.
  app.UseSwaggerUI(c =>
  {
  c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
  });
  app.UseVisitLogger();
  app.UseMvc();
 }

3、配置WebAPI项目属性

1、双击Properties下的launchSettings.json,将launchUrl更新为swagger

 

F5结果如下:

 4、新增注解

如上图,虽然WebAPI已经出来了,但是呢,并没有发现我们在Action上写的注释? 老司机应该知道在Framework版本里我们需要

将WebAPI启动项属性里更改“项目生产“一栏中新增XML文档,.NetCore也是如此。如下图:

 

保存后,按F5发现并木有生产注解,Why???  那是因为我们必须明确告诉Swagger应该从哪个路径读取WebAPI注解XML文件,更新Startup下的ConfigureServices。

参考下面代码:

// Register the Swagger generator, defining 1 or more Swagger documents
 services.AddSwaggerGen(options =>
 {
  options.SwaggerDoc("v1", new Info { Title = "TestSystem", Version = "v1" });    
  //注入WebAPI注释文件给Swagger  
  var xmlPath = Path.Combine(AppContext.BaseDirectory, "AirWebApi.xml");
  options.IncludeXmlComments(xmlPath);
 
  options.IgnoreObsoleteActions();
  ////options.IgnoreObsoleteControllers();
  //// 类、方法标记 [Obsolete],可以阻止【Swagger文档】生成
  options.DescribeAllEnumsAsStrings();   
  options.OperationFilter<FormDataOperationFilter>();
 });

代码不单单新增了注解,同时添加了阻止Swagger文档生成的配置,通过读取系统的[Obsolete]特性实现。

现在,让我们再看看结果吧~

 

 是不是很爽~~

还有,Swagger是支持授权登录的哦,这个待研究。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对猪先飞的支持。

[!--infotagslink--]

相关文章

  • c# webapi 配置swagger的方法

    这篇文章主要介绍了c# webapi 配置swagger的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • C# WebApi 接口传参详解

    这篇文章主要介绍了C# WebApi 接口传参详解,本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实体、数组等类型的参数如何传递。感兴趣的小伙伴们可以参考一下...2020-06-25
  • .net core webapi jwt 更为清爽的认证详解

    这篇文章主要介绍了.net core webapi jwt 更为清爽的认证详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • ASP.NET Core WebApi版本控制的实现

    这篇文章主要介绍了ASP.NET Core WebApi版本控制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • C# WebApi Get请求方式传递实体参数的方法示例

    这篇文章主要给大家介绍了关于C# WebApi Get请求方式传递实体参数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • .net Core 3.0 WebApi 创建Linux守护进程的方法

    这篇文章主要介绍了.net Core 3.0 WebApi 创建Linux守护进程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET Core 2.0 WebApi全局配置及日志实例

    下面小编就为大家分享一篇ASP.NET Core 2.0 WebApi全局配置及日志实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-09-22
  • ASP.net WebAPI 上传图片实例

    这篇文章主要介绍了ASP.net WebAPI 上传图片实例,有需要的朋友可以参考一下...2021-09-22
  • C# WebApi 路由机制剖析

    这篇文章主要介绍了C# WebApi 路由机制剖析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C# WebApi CORS跨域问题解决方案

    本篇文章主要介绍了C# WebApi CORS跨域问题解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C# WebApi 接口返回值不困惑:返回值类型详解

    这篇文章主要介绍了C# WebApi 接口返回值不困惑:返回值类型详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • ASP.NET WebAPI连接数据库的方法

    这篇文章主要为大家详细介绍了ASP.NET WebAPI连接数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • ASP.NET Core WebApi中使用FluentValidation验证数据模型的方法

    这篇文章主要介绍了ASP.NET Core WebApi中使用FluentValidation验证数据模型的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • .Net Core WebApi部署在Linux服务器上的方法

    这篇文章主要介绍了.Net Core WebApi部署在Linux服务器上的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET Core MVC/WebApi基础系列1

    这篇文章主要介绍了ASP.NET Core MVC/WebApi基础系列,后续会穿插讲EF Core和ASP.NET Core,虽说是基础系列但也是也有你不知道的。...2021-09-22
  • ASP.NET Core WebAPI实现本地化(单资源文件)

    这篇文章主要介绍了ASP.NET Core WebAPI实现本地化(单资源文件),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 如何使用签名保证ASP.NET MVC OR WEBAPI的接口安全

    这篇文章主要介绍了如何使用签名保证ASP.NET MVC OR WEBAPI的接口安全,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • C#进阶系列 WebApi身份认证解决方案推荐:Basic基础认证

    下面小编就为大家带来一篇C#进阶系列 WebApi身份认证解决方案推荐:Basic基础认证。小编觉得挺不错的,现在分享给大家。给大家一个参考。一起跟随小编过来看看吧...2020-06-25
  • asp net core 2.1中如何使用jwt(从原理到精通)

    这篇文章主要给大家介绍了关于asp net core 2.1中如何使用jwt(从原理到精通)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧...2021-09-22
  • 剖析Asp.Net Web API路由系统---WebHost部署方式

    这篇文章主要介绍了剖析Asp.Net Web API路由系统---WebHost部署方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...2021-09-22