Я использую Swagger для создания документации по моему REST API. Согласно тому, что написано вокруг, пользовательский интерфейс Swagger не поддерживает базовую аутентификацию (в отличие от онлайн-редактора). Моя проблема в том, что один из моих API-интерфейсов — это POST, для которого требуется дайджест (даже не базовая) аутентификация.
Возможное решение, которое я нашел, состоит в том, чтобы добавить фиксированный заголовок аутентификации user:pass в запрос через код javascript. Это легко сделать в соответствии с документацией Swagger UI (см. Пользовательские параметры заголовка). Я сообщаю инкриминируемую строку кода:
swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "XXXX", "header"));
К сожалению, это не работает. Поле swaggerUi.api
становится неинициализированным (нулевым) после того, как я инициализирую объект SwaggerUi, и, как следствие, swaggerUi.api.clientAuthorizations
не определено. Я пытался инициализировать такие поля по-разному, но каждый раз терпел неудачу. Я также пробовал аналогичные вызовы API, которые я нашел в обсуждениях этой темы, но ни один из них не сработал. У кого-нибудь есть идеи по этому поводу? Документация не особенно ясна по этому поводу.
Для полноты я сообщаю фрагмент js, где я инициализирую Swagger UI
var urlPush = "./doc_push.yaml";
window.swaggerUiPush = new SwaggerUi({
url: urlPush,
dom_id: "swagger-ui-container-push",
supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
onFailure: function(data) {
log("Unable to Load SwaggerUI");
},
docExpansion: "list",
jsonEditor: false,
defaultModelRendering: 'model',
showRequestHeaders: false,
});