如何在Swagger UI中发送带有请求的Authorization标头?

Mar*_*rta 18 swagger swagger-ui swagger-2.0 swashbuckle

我有一个ASP.NET Web Api 2应用程序.我添加了Swashbuckle(Swagger for .NET).它显示我的端点没问题,但是为了发送请求,我需要将Authorization标头附加到该请求.如果我理解为了做到这一点我需要修改index.html文件(https://github.com/swagger-api/swagger-ui#how-to-use-it)所以我git克隆了Swashbuckle项目为了修改index.html并添加一些标题.

这是在Swashbuckle中发送带有请求的Authorization标头的唯一方法吗?

Mar*_*rta 11

为了使用Swagger UI发送带有请求的Authorization标头,我需要:

  1. 鉴于我的程序集的名称是:My.Assembly它包含一个文件夹:Swagger,我放置了我的自定义index.html,我在SwaggerConfig.cs中添加了这一行:

     c.CustomAsset("index", thisAssembly, "My.Assembly.Swagger.index.html");
    
    Run Code Online (Sandbox Code Playgroud)

请注意,index.html加载javascript和css文件.我必须将所有点都更改为文件路径中的虚线,以便加载这些文件.我不知道为什么要这么做,但它解决了加载文件的问题......

  1. 在index.html文件中我修改了

    addApiKeyAuthorization()

功能看起来像那样:

function addApiKeyAuthorization() {
        var key = encodeURIComponent($('#input_apiKey')[0].value);
        if (key && key.trim() != "") {
            var value = "auth-scheme api_key=123456,order_id=56789";
            var authKeyHeader = new SwaggerClient.ApiKeyAuthorization("Authorization", value, "header");
            window.swaggerUi.api.clientAuthorizations.add("Authorization", authKeyHeader);
        }
    }
Run Code Online (Sandbox Code Playgroud)

注意我将"查询"更改为"标题".

  1. 我也取消注释了这段代码:

    var apiKey = "this field represents header but can be anything as long as its not empty";
    $('#input_apiKey').val(apiKey);
    
    Run Code Online (Sandbox Code Playgroud)

它将在第二个文本字段中显示文本,但似乎它包含的内容并不重要,只要它不是空的.

这对我有用,并使我能够加载自定义index.html文件.现在我正在寻找启用Swagger UI用户来操纵头参数的值...