nop*_*nop 3 c# swagger swashbuckle asp.net-core minimal-apis
我正在使用 .NET 最小 API,并且遇到了枚举的 JSON 序列化/反序列化行为的问题。尽管我尝试更改使用字符串而不是整数的行为,但 Swashbuckle.AspNetCore 的 Swagger 文档仍然将枚举表示为整数。
using System.Text.Json.Serialization;
var builder = WebApplication.CreateBuilder(args);
// Docs: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-7.0#configure-json-deserialization-options-globally
builder.Services.ConfigureHttpJsonOptions(options =>
{
options.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.MapPost("/api/v1/test", (TestRequest request) => Results.Ok(request));
app.Run();
public enum GridType
{
Arithmetic,
Geometric
}
public class TestRequest
{
public required string Name { get; init; }
public required GridType Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是当 Swagger UI 打开时,我仍然得到枚举的整数:
{
"name": "string",
"type": 0
}
Run Code Online (Sandbox Code Playgroud)
预期输出是:
{
"name": "string",
"type": "Arithmetic"
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*ami 12
MinimalApi 和 Swashbuckle Swagger 之间存在问题,您必须在两个不同的位置设置该选项:
builder.Services.ConfigureHttpJsonOptions(options =>
{
options.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
builder.Services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(options =>
{
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
Run Code Online (Sandbox Code Playgroud)
有关该问题的更多信息:https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/2293
归档时间: |
|
查看次数: |
2100 次 |
最近记录: |