Swashback Swagger Asp.Net Core将Api键作为请求中的默认标头值传递
我有一个基本Api,它接受Swashback Swagger Asp.Net Core将Api键作为请求中的默认标头值传递,swagger,swagger-ui,openapi,swashbuckle,Swagger,Swagger Ui,Openapi,Swashbuckle,我有一个基本Api,它接受我的Api键的默认头值和相应的值 我正试图让Swagger UI允许我输入头一次以进行授权,并在每个请求中传递键/值 到目前为止,我只成功地将头作为参数显式添加到每个端点,但这并不理想 相关代码片段: services.AddApiVersioning( options => { // reporting api versions will return the hea
我的Api键的默认头值和相应的值
我正试图让Swagger UI允许我输入头一次以进行授权,并在每个请求中传递键/值
到目前为止,我只成功地将头作为参数显式添加到每个端点,但这并不理想
相关代码片段:
services.AddApiVersioning(
options =>
{
// reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
options.ReportApiVersions = true;
});
services.AddVersionedApiExplorer(
options =>
{
// add the versioned api explorer, which also adds IApiVersionDescriptionProvider service
// note: the specified format code will format the version as "'v'major[.minor][-status]"
options.GroupNameFormat = "'v'VVV";
// note: this option is only necessary when versioning by url segment. the SubstitutionFormat
// can also be used to control the format of the API version in route templates
options.SubstituteApiVersionInUrl = true;
});
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Api", Version = "v1" });
c.SwaggerDoc("v2", new OpenApiInfo { Title = "Api", Version = "v2" });
// this isn't ideal as I have to fill in the Api Key on ever request
//c.OperationFilter<ApiKeySwaggerFilter>();
c.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.ApiKey,
Name = "my-api-key",
In = ParameterLocation.Header
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{ new OpenApiSecurityScheme()
{
// Type = SecuritySchemeType.ApiKey,
Name = ""
//In = ParameterLocation.Header
//Reference = new OpenApiReference()
//{
// Id = "myToken",
// Type = ReferenceType.SecurityScheme
//},
}, new string[] { }
}
});
});
我所在位置的对应图像:
相应的最小峰值:
我觉得这很接近,但如何让Api头在每个请求上都被传递,而不必强制用户在每个方法请求上填写参数。通过以下更新部分解决了这个问题:
c.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
{
Description = "Enter your Api Key below:",
Name = "my-api-key",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "ApiKey"
},
},
new List<string>()
}
});
c.AddSecurityDefinition(“ApiKey”),新的OpenApiSecurityScheme
{
Description=“在下面输入Api密钥:”,
Name=“我的api密钥”,
In=参数位置.Header,
类型=SecuritySchemeType.ApiKey
});
c、 AddSecurityRequest(新的OpenAPISecurityRequest()
{
{
新的OpenApiSecurityScheme
{
Reference=新的OpenApiReference
{
Type=ReferenceType.SecurityScheme,
Id=“ApiKey”
},
},
新名单()
}
});
用户单击绿色的“授权”按钮并在此处输入API密钥。然后,此API密钥将与所有请求一起发送。这不是你需要的吗?
c.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
{
Description = "Enter your Api Key below:",
Name = "my-api-key",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "ApiKey"
},
},
new List<string>()
}
});