Hard Coding Api Значение ключа в заголовке при использовании созданного Swagger Client

Я написал много API в С# и создал сайт документации Swagger с использованием Swashbuckle.

Для аутентификации вызовов REST я использую ключ API в заголовке.

Я создал страницу, которая позволяет загружать определенный клиент для любого языка программирования, как описано здесь: https://generator.swagger.io

Я хотел бы включить пользователя для создания клиента с его собственным ключом API, поэтому ему больше не нужно вручную устанавливать ключ API в код.

В моем Swagger JSON у меня есть это определение безопасности:

"securityDefinitions": {
    "apiKey": {
        "type": "apiKey",
        "description": "API Key Authentication",
        "name": "X-ApiKey",
        "in": "header"
    }
}

На странице Generator Client Generator я нашел эту модель, которая позволяет настраивать параметры клиентов, но я не могу найти, как (и если) ключ API может быть жестко закодирован (или любой другой вид авторизации) в клиентском коде.

GeneratorInput {
    spec (object, optional),
    options (object, optional),
    swaggerUrl (string, optional),
    authorizationValue (AuthorizationValue, optional),
    securityDefinition (SecuritySchemeDefinition, optional)
}
AuthorizationValue {
    value (string, optional),
    type (string, optional),
    keyName (string, optional)
}
SecuritySchemeDefinition {
    description (string, optional),
    type (string, optional)
}

Я предполагаю, что должен установить объект AuthorizationValue, но нет документации об этом (или я не могу найти его).

Достаточно было бы иметь возможность иметь сгенерированную клиентскую lib для добавления произвольного HTTP-заголовка ко всем запросам.

В этом случае мы могли бы просто добавить:

X-ApiKey:{whatever the key is}

У кого-нибудь есть идея?

Большое спасибо!

Ответы

Ответ 1

Кажется, нужно просто добавить его как параметр для каждого вызова со значением по умолчанию - поэтому у JSON будет что-то вроде этого:

"post": {
                "tags": [ "user" ],
                "summary": "Creates list of users with given input array",
                "description": "",
                "operationId": "createUsersWithListInput",
                "produces": [ "application/xml", "application/json" ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "body",
                        "description": "List of user object",
                        "required": true,
                        "schema": {
                            "type": "array",
                            "items": { "$ref": "#/definitions/User" }
                        }
                    },
                    {
                        "in": "header",
                        "name": "X-ApiKey",
                        "required": false,
                        "type": "string",
                        "format": "string",
                        "default": "abcdef12345"
                    }
                ],
                "responses": { "default": { "description": "successful operation" } }
            }