如何在Swagger-UI 3.0版中为每个请求添加自定义标头

时间:2017-07-13 15:41:13

标签: swagger swagger-ui

我想在swagger-ui 3.0版上支持多个json版本。 每个ajax调用的第二个json我想添加一个自定义标题 名称为x-api-version,值为2

我试过这个:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('x-my-custom-header', 'some value');
    }
});

但它不起作用。 swagger ui 3.0.0的文档很差,我找不到解决方案

1 个答案:

答案 0 :(得分:0)

经过一些实验,如果Swagger使用jquery处理OPTIONS请求,而使用superagent客户端HTTP请求库处理其他类型的请求,例如GET,POST等...

因此,要为Swagger-UI中的每个请求添加自定义标头,请使用以下代码:

    $(document).ready(function () {

    // Intercept jquery ajax request
    $.ajaxSetup({

        beforeSend: function (xhr, settings) {

            // Add the header to the Ajax request
            xhr.setRequestHeader("Authorization", getHeader());
        },

        // Disable caching of AJAX responses
        cache: false

    });

    // Intercept superagent request
    window.swaggerUi.options["requestInterceptor"] = function () {

        // Add the header to the request
        this.headers.Authorization = getHeader();

        return this;
    };

});

function getHeader() {

    var header = ... some code to calculate or generate a header ...

    return header
}