2015-06-29 37 views
1

我在尝试安装Swagger> = 2.0,但我无法用单个请求发送很多头文件。这是我的index.html的js代码:用Swagger发送多个头文件

$(function() { 
    var url = window.location.search.match(/url=([^&]+)/); 
    if (url && url.length > 1) { 
    url = decodeURIComponent(url[1]); 
    } else { 
    url = "http://localhost:9033/api/swagger.json"; 
    } 
    window.swaggerUi = new SwaggerUi({ 
    url: url, 
    dom_id: "swagger-ui-container", 
    supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'], 
    onComplete: function(swaggerApi, swaggerUi){ 
     if(typeof initOAuth == "function") { 
     initOAuth({ 
      clientId: "your-client-id", 
      realm: "your-realms", 
      appName: "your-app-name" 
     }); 
     } 

     $('pre code').each(function(i, e) { 
     hljs.highlightBlock(e) 
     }); 

     addApiKeyAuthorization(); 
    }, 
    onFailure: function(data) { 
     log("Unable to Load SwaggerUI"); 
    }, 
    docExpansion: "none", 
    apisSorter: "alpha", 
    showRequestHeaders: true 
    }); 

    function addApiKeyAuthorization(){ 
    var key = encodeURIComponent($('#input_apiKey')[0].value); 
    if(key && key.trim() != "") { 
     window.swaggerUi.api.clientAuthorizations.add("X-My-Header", new SwaggerClient.ApiKeyAuthorization("X-My-Header", "test value", "header")); 
     window.swaggerUi.api.clientAuthorizations.add("Authorization", new SwaggerClient.ApiKeyAuthorization("Authorization", key, "header")); 
     log("added key " + key); 
    } 
    } 

    $('#input_apiKey').change(addApiKeyAuthorization); 

    // if you have an apiKey you would like to pre-populate on the page for demonstration purposes... 
    /* 
    var apiKey = "myApiKeyXXXX123456789"; 
    $('#input_apiKey').val(apiKey); 
    */ 

    window.swaggerUi.load(); 

    function log() { 
    if ('console' in window) { 
     console.log.apply(console, arguments); 
    } 
    } 

正如你可以看到我添加了两个头,但只有第一个与请求一起发送。如果我反转他们,那么另一个将被发送,但我从来没有设法发送两个。文档非常简单,并说:

注意!您可以在一个请求上传递多个头文件参数,只需使用它们的唯一名称(密钥用于上例)。

为了清楚起见,两个头都加入到Access-Control-Allow-Headers中,并且两者都可以单独由服务器接收,情况是我无法将它们发送到一起。

问题: 有谁知道如何处理?

(还有一个重要的假设,这些头文件对我所有的API都是全局的,所以我想直接把它们放在swagger UI中而不是记录每个API方法)。

回答