当前位置: 首页 > 科技观察

如何在ASP.NetCore中使用Swagger

时间:2023-03-17 10:41:06 科技观察

本文转载请联系码农阅读公众号。当你开发完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{///

///Getactionmethodwithoutanyargument//////[HttpGet]publicActionResult>Get(){returnnewstring[]{"value1","value2"};}//////Getactionmethodthatacceptsanintegerasanargument/////////[HttpGet("{id}")]publicActionResultGet(intid){return"value";}//////Postactionmethodtoadddata//////[HttpPost]publicvoidPost([FromBody]stringvalue){}//////Putactionmethodtomodifydata/////////[HttpPut("{id}")]publicvoidPut(intid,[FromBody]stringvalue){}//////Deleteactionmethod//////[HttpDelete("{id}")]publicvoidDelete(intid){}}打开xml注解。值得注意的是,Swagger默认不显示XML注释。您需要手动打开它。怎么做?右击Project,选择Properties,切换到Build页面,选择XMLdocumentationfile项并指定xml的生成位置,如下:接下来在ConfigureServices方法下配置生成xml的路径到swagger,如下如下代码所示:c.IncludeXmlComments(@"D:\Projects\IDG\IDGSwaggerDemo\IDGSwaggerDemo\IDGSwaggerDemo.xml");这就是在Swagger中打开xml注解需要的所有东西指定启动url到SwaggerUI要将启动项目的url指向SwaggerUI,右击Project选择Properties,在Debug的Lanuch浏览器上指定swagger即可,如如下图所示:再次运行程序,可以发现默认的页面是SwaggerURL,如下图所示:从图中可以看出,五个API方法后面都有相应的xml注解。Swashbuckle是一个非常好的工具,可以简单粗暴的为API接口生成文档。从文中也可以看出Swashbuckle的配置非常简单。Swagger还有一些更高级的功能,比如通过CSS自定义SwaggerUI,还可以根据API的版本生成不同的Swagger文档,后续文章会为大家介绍更多高级功能。翻译链接:https://www.infoworld.com/article/3400084/how-to-use-swagger-in-aspnet-core.html