我已经为Swagger添加了一个头参数,用于API密钥,这可以提供输入API密钥的能力。
- Swashbuckle.AspNetCore 6.1
- Swashbuckle.AspNetCore.Swagger 6.1
- Swashbuckle.AspNetCore.SwaggerGen 6.1
- Swashbuckle.AspNetCore.SwaggerUI 6.1
的数据
我的代码如下,在Startup.cs中我有以下用于添加Swagger配置的位置
public void ConfigureServices(IServiceCollection services)
services.AddSwaggerGen(config =>
{
config.OperationFilter<SwaggerFilter>();
});
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Swift Api V1");
c.RoutePrefix = string.Empty;
});
字符串
Swaggerfilter代码的全部内容是
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Collections.Generic;
namespace SwiftApi.Api
{
public class SwaggerFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
operation.Parameters = new List<OpenApiParameter>();
operation.Parameters.Add(new OpenApiParameter
{
Name = "Authorization",
In = ParameterLocation.Header,
Schema = new OpenApiSchema { Type = "string" },
Description = "API Key",
Required = true
});
}
}
}
型
然而,在方法中检查传递到头中的值,这在我的头值列表中找不到
的
在网上看了看,我看不出我做错了什么,但显然我遗漏了一些东西,当我使用 Postman 我可以看到头值。
这是我第一次尝试这样做,所以很可能我错过了一些东西,问题是什么?
从Postman
检索的值
任何建议将不胜感激。
2条答案
按热度按时间xwmevbvl1#
好吧,我终于把这个工作做好了,我添加了以下内容:
字符串
![](https://i.stack.imgur.com/ItNfP.png)
并删除代码;
config.OperationFilter<SwaggerFilter>();
这是用来把ApiKey参数放在Swagger这里,这就是我试图实现的。x1c 0d1x
但是,似乎应该从这里调用Authorise,或者单击每个控制器上的挂锁图标。
我试图让参数工作,但无论我做了什么,它总是返回一个参数。现在我不确定你是否必须使用新的授权按钮,出现在Swagger中,当你应用更改的配置,但它会做测试在Swagger中,我宁愿API键参数,如第一张图片所示,当我添加密钥并从请求头中提取时,它已经工作。
似乎没有人能在这方面给我指出任何一个方向。
ttcibm8c2#
在我的例子中,我以这种方式配置了Class元数据,
字符串
成功了!希望对你有帮助