zoukankan      html  css  js  c++  java
  • Asp Net Core Swagger自动生成接口文档

    Swagger是什么

    Swagger工具为你的Asp Net Core生成漂亮的API文档。目前社会上大部分都是一个服务端为N个客户端提供接口,往往我们需要提供一个友好的API文档,Swagger的出现,几乎使得API文档完全自动化。

    开始使用Swagger

    • 此处我们使用开发IDE为VsCode,输入dotnet new webapi -o SwaggerDemo 创建ASP.NET Core Web API项目
    • 添加Swashbuckle.AspNetCore包(此处不讨论包的安装方法,请自行上网搜索),在.csproj文件中会生成如下引用
    • 打开Startup.cs文件,添加如下代
            public Startup(IConfiguration configuration, IHostingEnvironment env)
            {
                Configuration = configuration;
                this.Env = env;
            }
            public IHostingEnvironment Env { get; }
    
            public IConfiguration Configuration { get; }
    
            public string[] docs = new[] { "未分类" };
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
                if (Env.IsDevelopment())
                {
                    services.AddSwaggerGen(options =>
                    {
                        foreach (var d in docs) options.SwaggerDoc(d, new Info { Version = d });
                        options.DocInclusionPredicate((docName, description) =>
                        {
                            description.TryGetMethodInfo(out MethodInfo mi);
                            var attr = mi.DeclaringType.GetCustomAttribute<ApiExplorerSettingsAttribute>();
                            if (attr != null)
                            {
                                return attr.GroupName == docName;
                            }
                            else
                            {
                                return docName == "未分类";
                            }
                        });
                        var ss = options.SwaggerGeneratorOptions;
                        options.IncludeXmlComments(@"E:VsCodeC#.Net Core第三章 利用Swagger生成接口文档SwaggerDemoinDebug
    etcoreapp2.2SwaggerDemo.xml");
                    });
                }
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                app.UseMvc();
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseSwagger()
                    .UseSwaggerUI(options  =>
                    {
                        options.DocumentTitle = "Ron.liang Swagger 测试文档";
                        foreach (var item in docs)
                            options.SwaggerEndpoint($"/swagger/{item}/swagger.json", item);
                    });
                }
            }

    代码中涉及到的xml需要换成自己的路径

     为保证自己项目xml文档的生成 把.csproj文件添加以下属性

    doenet build--->dotnet run-->访问https://localhost:8090/swagger/index.html(此处需要换成自己的网站地址)可以看到api文档已经成功生成,赶快自己点击玩玩把~~~

    添加分组和注释信息

    上面我们用的默认API文档,实际工作中我们需要分类以及注释信息等。下面我们添加一个测试分组

    • 首先打开我们的api控制器(ValuesController).修改为

    • 添加注释信息

    再次访问

     总结

    • 利用Swagger自动生成API文档
    • 对每个控制器进行分组
    • 自动抓取注释内容
    • 在API文档界面进行测试

     

  • 相关阅读:
    [原]openstack-kilo--issue(十一)Failed connect to 169.254.169.254:80; No route to host
    [转]pycharm active code
    [原]openstack-kilo--issue(九) heat stacks topology中图形无法正常显示
    [原]CentOS 7 网卡子接口的创建
    [转]Shell中read的常用方式
    [转]输出带颜色的shell
    第十七节:从状态机的角度async和await的实现原理(新)
    第十六节:时隔两年再谈异步及深度剖析async和await(新)
    第十一节:SQLServer事务写法、各种锁、事务隔离级别
    第十七节:SQL中的一些常用SQL积累(持续更新)
  • 原文地址:https://www.cnblogs.com/FashionDoo/p/10525448.html
Copyright © 2011-2022 走看看