我正在尝试构建asp.net mvc web api并且还尝试首次使用swagger。在我的所有请求中,有一个名为' auth'的参数。所以使用swagger我正在输入一个关键的右上方的swagger页面并在测试方法之前按下explore并且我取消注释swagger.config文件中的代码,如下所示。
c.ApiKey("auth")
.Description("API Key Authentication")
.Name("auth")
.In("query");
但仍然摇摇晃晃地将参数名称作为' api_key'。如何更改' api_key'到' auth'招摇吗?
答案 0 :(得分:1)
I found the solution here at the end
解决方案是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);
}
}
答案 1 :(得分:0)
我不确定如何直接更改api_key,但您可以使用UI js文件以您喜欢的方式完全操作它。我已经回答了类似的问题here。
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!");
}
});
});
所以我想你可以使用更简单的方法来改变参数的名称。
这不是一个简单的名称更改,但是如果不能轻易做到这一点(当然可能仍然可能),你可以使用这种方法。
答案 2 :(得分:0)
为了使用招摇的人的利益: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
}
},