本文转载请联系码农阅读公众号。当你开发完webapi之后,为了方便双方的对接,往往需要对webapi接口进行文档化。是否有任何快速和交互式的文档?可以使用快捷工具Swagger,其可视化UI可以轻松帮助你对API进行文档化,同时方便对API进行测试。Swashbuckle是一个用于生成Swagger文档的开源工具包。本文将讨论如何使用Swashbuckle为您的RestfulAPI生成交互式文档。安装Swagger中间件要使用Swagger文档,nuget需要引用Swashbuckle.AspNetCore包。也可以通过VisualStudio2019的NuGet包管理器可视化界面安装或者通过NuGet包管理器命令行工具输入如下命令:dotnetaddpackageSwashbuckle.AspNetCoreconfigureSwaggermiddle配置服务方法。请注意,以下AddSwaggerGen方法用于向API文档添加一些元数据。services.AddSwaggerGen(c=>{c.SwaggerDoc("v1",newInfo{Version="v1",Title="SwaggerDemo",Description="SwaggerDemoforValuesController",TermsOfService="None",Contact=newContact(){Name="JoydipKanjilal",Email="joydipkanjilal@yahoo.com",Url="www.google.com"}});});接下来我们启动Swagger,在Startup.Configure方法下添加如下代码:UseSwagger();app.UseSwaggerUI(c=>{c.SwaggerEndpoint("/swagger/v1/swagger.json","v1");});为了完整起见,下面列出了Startup中的所有代码。usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.DependencyInjection;usingSwashbuckle.AspNetCore.Swagger;namespaceIDGSwaggerDemo{publicclassStartup{publicStartup(IConfigurationconfiguration){Configuration=配置;}publicIConfigurationConfiguration{get;}publicvoidConfigureServices(IServiceCollectionservices){services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);services.AddSwaggerGen(c=>{c.SwaggerDoc("v1",newInfo{Version="v1",Title="SwaggerDemo",Description="SwaggerDemoforValuesController",TermsOfService="None",Contact=newContact(){Name="JoydipKanjilal",Email="joydipkanjilal@yahoo.com",Url="www.google.com"}});});}publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv){if(env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseMvc();app.UseSwagger();app.UseSwaggerUI(c=>{c.SwaggerEndpoint("/swagger/v1/swagger.json","v1");});}}}浏览SwaggerUI现在让我们运行应用程序来浏览SwaggerUI地址。可以看到如下图所示的UI界面。不同的Http请求在图中用不同的颜色标出,甚至可以直接在UI上测试不同的。到目前为止,api接口在Action方法上创建了xml注释。在刚刚生成的swagger文档中,我并没有看到5个api接口的注解。这不优雅。如果要给swagger文档添加xml注解,简单粗暴的做法可以直接在Controller.Action上面写上注解信息。接下来为ValuesController下的每个Action添加注解,下面就是修改后的ValueController。[Route("api/[controller]")][ApiController]publicclassValuesController:ControllerBase{///
