我正在使用Swagger和C#创建一个最小的API.我真的不明白我是如何定义头参数的.类似于[SwaggerHeaderParameter("apiKey","Description...")]或类似的内容. 我到处找了,但似乎找不到(在我看来)一个相对简单的解决方案.有人能帮我吗?

示例代码:

using Swashbuckle.AspNetCore;

app.MapPut("/myapi",
[SwaggerResponse(200, "Success")]
[SwaggerResponse(400, "Bad request")]
    async Task<IResult> (HttpRequest request, ILogger<Program> log, CancellationToken ct) =>
    {
         var result = await request.ReadFromJsonAsync<MyClass[]>(request.HttpContext.RequestAborted);
         // [Required] Unique api key for this specific combination of supplierID and Stocknumber.
         var apikey = request.Headers["apikey"].ToString();
                    
            return Results.Ok(successList);
                
     })
     .Accepts<MyClass[]>(false, "application/json")
     .Produces<string[]>(StatusCodes.Status200OK, "text/plain")
     .Produces<Error>(StatusCodes.Status400BadRequest)

*在@Guru Stron的帮助下编辑

我现在的决定是:

app.MapPut("/myapi",
[SwaggerResponse(200, "Success")]
[SwaggerResponse(400, "Bad request")]
    async Task<IResult> (HttpRequest request, [FromHeader] string apikey, ILogger<Program> log, CancellationToken ct) =>
    {
       ...
    })
...

推荐答案

您可以从标题开始try binding parameter:

app.MapGet("/testHeader", ([FromHeader] string apikey) => "Hello World!");

enter image description here

Csharp相关问答推荐

Unity如何在PlayerPrefs中保存数据?

注册通用工厂的C# Dep注入

ASP.NET Core:如何在IPageFilter中注入ApplicationDbContext

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

模型绑定RazorPage表单

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

如何使用XmlSerializer序列化带有CDATA节的XML文件?

如何在C#中将方法/线程启动传递给基本构造函数

System.Text.Json .NET 8多形态语法化

将字节转换为 struct 并返回

在try 使用访问服务器上的文件夹时,如何解决CORS错误.NET核心API

关于扩展文件类C#的矛盾

为什么Docker中没有转发该端口?

为什么C#/MSBuild会自发地为不同的项目使用不同的输出路径?

EF Core:如何对关系属性进行建模?

如何在Polly重试策略成功之前将HttpClient请求排队?

C#如何获取字符串中引号之间的文本?

DropDownListFor未显示选定值

SharpZipLib在文件名前加上目录名,生成tar.gz

反编译源代码时出现奇怪的字符