说明
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文档生成的配置,通过读取html" target="_blank">系统的[Obsolete]特性实现。
现在,让我们再看看结果吧~
是不是很爽~~
还有,Swagger是支持授权登录的哦,这个待研究。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
下表列出了 Microsoft Office 中的新增事件。事件EnvelopeHideEnvelopeShow
本文向大家介绍Android Studio插件之Jenkins插件详解,包括了Android Studio插件之Jenkins插件详解的使用技巧和注意事项,需要的朋友参考一下 现在我就来介绍Android Studio上的Jenkins插件,让你可以更加方便地使用Jenkins。用Jenkins持续集成很久了,再Android Studio上的Jenkins插件也有一段时间了,用了该Jenkins
如何同时使用maven-flatten-plugin和maven-shade-plugin? 我使用、、来管理多模块项目的版本。 为了部署可共同消耗的工件,我使用maven-flatten-plugin生成一个扁平的pom,使${revision}成为实际值。 但是maven-shade-plugin在${修订版}不变的情况下生成了一个减少的pom。 如何指定 maven-shade-插件以使用扁
本文向大家介绍MySQL 密码增强插件,包括了MySQL 密码增强插件的使用技巧和注意事项,需要的朋友参考一下 介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来。首先该功能是在5.5以后的mysql版本才引入的插件,默认源码安装和二进制安装都没有启用该功能,如
这是一个VB6的插件,为VB6提供了增强的搜索支持.
我正在使用swagger codegen maven插件(2.2.2)从inputSpec生成API和模型类。语言是Spring,库是Spring boot。 昂首阔步生成的API类是用@Controller注释注释的,是否有任何配置选项可以将其更改为用@RestController注释API类? 技术堆栈 springboot-2.2.5java-jdk11maven-3.6.1swagger-