如何将多个授权密钥传递给swagger-js?

时间:2015-06-12 16:26:39

标签: javascript swagger-ui

使用swagger-ui版本2.1.0我试图将多个授权参数传递给请求的URL。看着我试过的example given on github

var api_key = 'api_key',
    username = 'username';

swaggerUi.api.clientAuthorizations.add('api_key', new SwaggerClient.ApiKeyAuthorization('api_key', api_key, 'query'));
swaggerUi.api.clientAuthorizations.add('username', new SwaggerClient.ApiKeyAuthorization('username', username, 'query'));

但是这导致只有第一个被传递给XHR,例如:

http://127.0.0.1:8000/api/v1/capability?api_key=api_key

如果我更换订单:

swaggerUi.api.clientAuthorizations.add('username', new SwaggerClient.ApiKeyAuthorization('username', username, 'query'));
swaggerUi.api.clientAuthorizations.add('api_key', new SwaggerClient.ApiKeyAuthorization('api_key', api_key, 'query'));

然后:

http://127.0.0.1:8000/api/v1/channel?username=username

我还尝试在添加中使用对象表示法:

swaggerUi.api.clientAuthorizations.add({
    'api_key': new SwaggerClient.ApiKeyAuthorization("api_key", api_key, "query"),
    'username': new SwaggerClient.ApiKeyAuthorization("username", username, "query")
});

但是只传递了一个参数:

http://127.0.0.1:8000/api/v1/capability?api_key=api_key

该函数的名称表明应该可以传递多个授权参数而不会发生任何冲突,但实践表明不是这样。

1 个答案:

答案 0 :(得分:1)

似乎对我有用的唯一方法是将自定义函数绑定到swaggerUi.api.clientAuthorizations.apply,例如:

    swaggerUi.api.clientAuthorizations.apply = function (obj) {
        obj.url += '?api_key=' + api_key + '&username=' + username;
    }

(该示例假定api_key和username存在于当前范围内)

swaggerUi.api.clientAuthorizations.apply有两个参数obj, securities - 它是您希望用来将凭据附加到HTTP请求的第一个参数。