我使用Swagger生成REST API的文档。根据所写的内容,Swagger UI不支持基本身份验证(与online editor不同)。我的问题是我的一个API是一个需要摘要(甚至不是基本的)身份验证的POST。
我发现一个可能的解决方案是添加固定用户:通过javascript代码在请求中传递身份验证标头。这应该根据Swagger UI documentation轻松完成(参见Custom Header Parameters)。我报告了有罪的代码行:
swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "XXXX", "header"));
不幸的是它不起作用。初始化SwaggerUi对象后,swaggerUi.api
字段结果未初始化(null),因此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,
});
答案 0 :(得分:0)
尝试使用SwaggerClient.PasswordAuthorization
代替SwaggerClient.ApiKeyAuthorization
-
var username = $('#input_username').val();
var password = $('#input_password').val();
var basicAuth = new SwaggerClient.PasswordAuthorization('basic', username, password);
window.swaggerUi.api.clientAuthorizations.add("basicAuth", basicAuth);