强类型 Id 的 Swagger 架构

问题描述 投票:0回答:1

我使用记录作为强类型 ID。

[TypeConveter(xxxxxx)]
public record ClientId(Ulid Value);

我创建了可以正常工作的实体框架和 Json 转换器。

示例

public class Request
{
    [TypeConverter(xxxxxxxx])
    public ClientId Id { get; set; }
    public string Name { get; set; }
}

序列化并且 API 正确响应

{
    "ClientId": "someidstring",
    "Name": "some name"
}

但是,Swagger 将签名显示为

{
    "ClientId"{id:{}}:
    "Name": "string"
}

我希望 Swagger 显示正确的 API 定义:

{
    "ClientId": "someidstring",
    "Name": "some name"
}
asp.net swagger
1个回答
0
投票

我通过为类创建一个类型并添加到 swager gen 来解决这个问题

options.MapType(() => new OpenApiSchema { Type = "string" });

[TypeConverter(typeof(GatewayIdTypeConverter))]

© www.soinside.com 2019 - 2024. All rights reserved.