【发布时间】:2021-03-22 11:13:18
【问题描述】:
我在 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 时,我可以看到标题值。
这是我第一次尝试这样做,所以很可能我错过了什么,问题是什么?
任何建议将不胜感激。
【问题讨论】:
-
您捕获的是进入请求的 HTTP 标头。您需要在 HTTPRequest 中为缺少的标头添加一个新标头。
-
你能详细说明一下吗?
-
感谢您的链接,但请您详细说明我应该做什么,将其视为告诉我缺少哪一部分,而不是让我猜测。正如我所指出的,这是我以前从未做过的事情,因此不确定我需要使用上述链接的哪一部分(如果有的话)-抱歉。
-
您有一个包含 HTTP 标头的 HTTP 请求。 Swagger 可能会称它们为其他名称,但它们是 HTTP 标头。您需要修改标题。我的链接中帖子的标题是“我如何告诉 swashbuckle 添加所需的标题”。