Swagger UI 集成

介绍

从它的网站:“....使用支持Swagger的API,您可以获得交互式文档,客户端SDK生成和可发现性。”

ASP.NET核心

安装NuGet包

Swashbuckle.AspNetCore  NuGet包安装  到您的Web项目中。

配置

将Swagger的以下配置代码添加到Startup.cs的ConfigureServices方法中

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    //your other code...
    
      services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info { Title = "AbpZeroTemplate API", Version = "v1" });
                options.DocInclusionPredicate((docName, description) => true);
            });
    
    //your other code...
}

然后,要使用swagger,请将此代码添加到Startup.cs的Configure方法中

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //your other code...

     app.UseSwagger();
            //Enable middleware to serve swagger - ui assets(HTML, JS, CSS etc.)
            app.UseSwaggerUI(options =>
            {
                options.SwaggerEndpoint("/swagger/v1/swagger.json", "AbpZeroTemplate API V1");
            }); //URL: /swagger 
            
    //your other code...
}

测试

而已!您现在可以在“/ swagger”下浏览swagger ui。

ASP.NET 5.x.

安装NuGet包

Swashbuckle.Core  NuGet包安装  到WebApi项目(或Web项目)。

配置

将Swagger的配置代码添加到 模块的  Initialize方法中。例:

public class SwaggerIntegrationDemoWebApiModule : AbpModule
{
    public override void Initialize()
    {
        //your other code...

        ConfigureSwaggerUi();
    }

    private void ConfigureSwaggerUi()
    {
        Configuration.Modules.AbpWebApi().HttpConfiguration
            .EnableSwagger(c =>
            {
                c.SingleApiVersion("v1", "SwaggerIntegrationDemo.WebApi");
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            })
            .EnableSwaggerUi(c =>
            {
                c.InjectJavaScript(Assembly.GetAssembly(typeof(AbpProjectNameWebApiModule)), "AbpCompanyName.AbpProjectName.Api.Scripts.Swagger-Custom.js");
            });
    }
}

请注意,我们在配置swagger ui时注入名为“Swagger-Custom.js”的JavaScript文件。此脚本文件用于在ui中测试api服务时向请求添加CSRF令牌。您可能还需要将此文件作为嵌入式资源添加到WebApi项目中,并在注入时使用InjectJavaScript方法中的逻辑名称。

重要提示:上面的代码对于您的项目会略有不同(命名空间不是AbpCompanyName.AbpProjectName ...而AbpProjectNameWebApiModule将是  YourProjectName WebApiModule)。

这是Swagger-Custom.js的内容:

var getCookieValue = function(key) {
    var equalities = document.cookie.split('; ');
    for (var i = 0; i < equalities.length; i++) {
        if (!equalities[i]) {
            continue;
        }

        var splitted = equalities[i].split('=');
        if (splitted.length !== 2) {
            continue;
        }

        if (decodeURIComponent(splitted[0]) === key) {
            return decodeURIComponent(splitted[1] || '');
        }
    }

    return null;
};

var csrfCookie = getCookieValue("XSRF-TOKEN");
var csrfCookieAuth = new SwaggerClient.ApiKeyAuthorization("X-XSRF-TOKEN", csrfCookie, "header");
swaggerUi.api.clientAuthorizations.add("X-XSRF-TOKEN", csrfCookieAuth);

有关 更多配置选项,请参阅Swashbuckle  文档

测试

而已!让我们浏览/ swagger / ui / index:

Swagger UI

您可以查看所有Web API控制器(以及  动态Web API  控制器)并对其进行测试。

nidie.com.cn - 用心与你沟通