dotnet core程序员.NET

[Swagger]Asp.net core 中为API添加可视化

2017-03-19  本文已影响964人  春上川酷

前言碎语

Swagger大名已经听闻很久了,可惜项目中一直没有机会用到。话说之前项目中一直用asp.net mvc 的help page, 用习惯了, 而且够用, 也就没有考虑新的东西。但是貌似现在对dotnet core没有支持,正好给我个借口,在一个即将开始的新项目,大胆尝试下Swagger. 写下这篇Blog还有一个原因. 起初我在找相关资料的时候, 要么是Asp.net 使用Swagger, 要么是dotnet core早期使用project.json的版本. 既然project.json已死, 我们就来看看最新的使用方式吧.

动手实践

我这里安装的是VS2017, 当然 VS Code也是可以的. 有了环境自然就可以开搞(Lu). Nuget安装Swagger的命令是:

Install-Package Swashbuckle.AspNetCore -Pre

我尝试了几个都不对, 感觉这个应该是预览版, 大家先用着, 以后有正式版出来我及时更新.
基于asp.net core的中间件机制, Swagger也需要加入到中间件服务的列表中, 这样才可以启用Swagger. 代码如下.

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();

        // Add Swagger UI.
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "DemoAPI", Version = "v1" });
        });
    }

然后启用Swagger, 生成相应的Json 文件, 并且指定Endpoint.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        //app.UseMvc();
        app.UseMvcWithDefaultRoute();
        
        app.UseSwagger();
        
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "DemoAPI V1");
        });
    }

这样我们就可以运行起来看看.

访问地址就像前面代码中设置的一样 "/swagger/v1/swagger.json". 这样能够看到Swagger 生成的Json文件. 我们再来看看Swagger的UI.

界面很简洁, 使用起来也很简单.

另外, 如果想要增加一些描述也很简单. 只需调用下SwaggerDoc函数, 代码如下.

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info
    {
        Version = "v1",
        Title = "DemoAPI",
        Description = "A simple example ASP.NET Core Web API",
        TermsOfService = "None",
        Contact = new Contact { Name = "春上川酷", Email = "", Url = "http://www.jianshu.com/u/760d62bd90d5"},
        License = new License { Name = "Use under LICX", Url = "http://url.com" }
    });
});

如果想使用代码中的注释对API进行描述, 只需要配置XML文件即可. 方法很简单, 打开项目的属性, 找到XML文件并勾选, 如下图.

再加入一点代码.

        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "DemoAPI",
                Description = "A simple example ASP.NET Core Web API",
                TermsOfService = "None",
                Contact = new Contact { Name = "春上川酷", Email = "", Url = "http://www.jianshu.com/u/760d62bd90d5" },
                License = new License { Name = "Use under LICX", Url = "http://url.com" }
            });

            var basePath = PlatformServices.Default.Application.ApplicationBasePath;
            var xmlPath = Path.Combine(basePath, "DemoAPI.xml");
            c.IncludeXmlComments(xmlPath);
        });

然后为一个API加入注释.

运行一下看看效果.

就是这样, 妈妈再也不用担心我的API不好调试了.

--------------------------华丽丽的分割-----------------------------------

愿dotnet社区日益强大, 愿dotnet生态日趋完善. dotnet core技术交流群欢迎你, 扫描下面二维码进群.

上一篇下一篇

猜你喜欢

热点阅读