0%

Swagger UI 学习笔记

开发中必须要提供接口文档,如果自己也了一遍注释,还需要另外再写一遍接口文档,就会感觉很麻烦。使用了swagger ui,就可以根据接口中的注释,自动的生成全部 API 接口文档,很香。

如何使用

官方资料

swagger-ui官方网站

swagger-ui-github Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.

Swashbuckle.AspNetCore Swagger tools for documenting API’s built on ASP.NET Core

NSwag

带有 Swagger/OpenAPI 的 ASP.NET Core Web API 文档– 微软官方教程

整合swagger UI 实现在线文档的教程

  • ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

  • 部分配置代码

    • // This method gets called by the runtime. Use this method to add services to the container.
              public void ConfigureServices(IServiceCollection services)
              {
                  // 添加SwaggerUI
                  services.AddSwaggerGen(c =>
                  {
                      //配置操作会添加诸如作者、许可证和说明信息等:
                      c.SwaggerDoc("v1", new OpenApiInfo { 
                          Title = "TinyErp API", 
                          Version = "v1" ,
                          Description = "TinyErp 接口说明文档",
                          //TermsOfService = "None",
                          Contact = new OpenApiContact
                          {
                              Name = "hongjy",
                              Email = "hongjy1991@gmail.com",
                          },
                          License = new OpenApiLicense
                          {
                              Name = "MIT",
                          }
                      });
      
      
                      // 为 Swagger JSON and UI设置xml文档注释路径
                      //var xmlFile = AppContext.BaseDirectory;
                      var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
                      var xmlPath = Path.Combine(basePath, "TinyErp.Admin.xml");
      
                      c.IncludeXmlComments(Path.Combine(basePath, "TinyErp.Service.xml"));
                      c.IncludeXmlComments(xmlPath);
                      c.EnableAnnotations();//注释
                      //c.SwaggerDoc("v2", new OpenApiInfo { Title = "TinyErp API", Version = "v2" });
                  });
      
                
              }
      
      
      
              public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
              {
                
                  //启用中间件服务生成Swagger作为JSON终结点
                  app.UseSwagger();
                  //启用中间件服务对swagger-ui,指定Swagger JSON终结点
                  app.UseSwaggerUI(c =>
                  {
                      c.SwaggerEndpoint("/swagger/v1/swagger.json", "TinyErp API v1");
                      // 要在应用的根 (http://localhost:<port>/) 处提供 Swagger UI,请将 RoutePrefix 属性设置为空字符串:
                      //c.RoutePrefix = string.Empty;
                  });
              }
      

遇到的坑

不太好用的地方

  • 如果项目的接口累计变得很多,第一次从xml文件中读取,生成的时候就会很慢。
  • .net 项目每次一编译,发布完成,第一次请求访问都很慢,如果接口经常有改动,使用起来感觉还是不太方便。
  • 调试功能 没有postman ,apifox 等其他工具好用。

使用后的效果

项目中引入的包 我是用的 swashbuckle 。不知道这个中文啥意思,不管他了。

rest full 格式的json地址 ,可以导入到post man当中方便调试

生成接口文档

生成请求参数和返回实体类的注释