Можно ли изменить имя api_key в swagger?

Я пытаюсь создать веб-API asp.net mvc, а также впервые пытаюсь использовать swagger. Во всех моих запросах есть параметр с именем «auth», поэтому, используя swagger, я ввожу ключ вправо страницы swagger и нажмите «Исследовать» перед тестированием метода, а также раскомментируйте код в файле swagger.config, как показано ниже.

 c.ApiKey("auth")
 .Description("API Key Authentication")
 .Name("auth")
 .In("query");

Но все же чванство принимает имя параметра как «api_key». Как я могу изменить «api_key» на «auth» в чванстве?


person mr.    schedule 09.06.2016    source источник


Ответы (3)


Я нашел решение здесь, в конце

решение состоит в том, что изменение функции ниже в index.html

function addApiKeyAuthorization() {
        var key = encodeURIComponent($('#input_apiKey')[0].value);
        if (key && key.trim() != "") {
            var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("NAME OF PARAMETER", key, "query");
            window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth);
            log("added key " + key);
        }
    }
person mr.    schedule 09.06.2016

Я не уверен, как напрямую изменить api_key, но вы можете использовать js-файл пользовательского интерфейса, чтобы полностью манипулировать им так, как вам нравится. Я ответил на аналогичный вопрос здесь.

1) Добавьте js-файл:

c.InjectJavaScript(thisAssembly, "SwashbuckleCustomAuth.CustomContent.basic-auth.js"); 

2) Это пример JS, который будет подключаться к серверу токенов, получать ключ API по имени пользователя/паролю, а затем добавлять его в качестве заголовка.

$('#explore').off();

$('#explore').click(function () {
   var key = $('#input_apiKey')[0].value;
   var credentials = key.split(':'); //username:password expected

$.ajax({
    url: "yourAuthEndpoint",
    type: "post",
    contenttype: 'x-www-form-urlencoded',
    data: "grant_type=password&username=" + credentials[0] + "&password=" + credentials[1],
    success: function (response) {
        var bearerToken = 'Bearer ' + response.access_token;

        window.swaggerUi.api.clientAuthorizations.add('Authorization', new SwaggerClient.ApiKeyAuthorization('Authorization', bearerToken, 'header'));
        window.swaggerUi.api.clientAuthorizations.remove("api_key");
        alert("Login successfull");
       },
       error: function (xhr, ajaxoptions, thrownerror) {
        alert("Login failed!");
       }
    });
});

Поэтому я предполагаю, что вы можете использовать более простой js для изменения имени параметра.

Это не простое изменение имени, но вы можете использовать этот подход, если это невозможно сделать простым способом (что, конечно, все еще возможно).

person Ilya Chernomordik    schedule 09.06.2016
comment
спасибо, но мне нужно добавить его в URL как параметр. Я нашел решение в конце - person mr.; 09.06.2016

В интересах людей, которые используют swagger: 2.0. Это должно быть установлено в файле swagger.json.

{
  "swagger": "2.0",
  "info": {
    "description": "API Documentation",
    "version": "1.0.2",
    "title": "my super service"
  },
  "basePath": "/my-super-services/api",
  "host": "example.com",
  "schemes": [
    "https",
    "http"
  ],
  "securityDefinitions": {
    "UserSecurity": {
      "type": "apiKey",
      "in": "header",       <----- set this to header or cookie or query
      "name": "X-Api-Key"   <----- you custom key goes here
    }
  },
person virtuvious    schedule 03.09.2017