gpt4 book ai didi

c# - Swashbuckle MapType 不适用于参数

转载 作者:行者123 更新时间:2023-12-04 13:59:45 25 4
gpt4 key购买 nike

我有一个 API 端点,它将 ShortGuid 类作为参数,如下所示:

[HttpGet("api/endpoint")]
public async Task<IActionResult> GetTablesAsync(ShortGuid id){}

生成一个 swagger 定义:
"parameters":[
{
"name":"guid",
"in":"query",
"required":false,
"type":"string",
"format":"uuid"
},
{
"name":"value",
"in":"query",
"required":false,
"type":"string"
}
],

我需要将该参数视为字符串,而不是 ShortGuid 对象。我已经有一个可以正常工作的类型的 JsonConverter,但 Swashbuckle 不理解它,所以我的架构不正确(而且我的 swagger-js 客户端不起作用)。我认为 MapType<> 会起作用,但这似乎只影响响应对象,因为架构仍将其视为 ShortGuid。
c.MapType<ShortGuid>(() => new Schema { Type = "string" });

我是否需要 ISchemaFilter 来执行此操作?如果是这样,我该如何编写它(尝试了多次但没有成功)

最佳答案

为了在查询字符串上工作,你必须添加一个 TypeConverter为您 ShortGuid .
以下是有关为什么它无法正常工作的一些信息:https://github.com/dotnet/aspnetcore/issues/4825
另请注意,如果您使用 Nullable<ShortGuid> ,您还需要添加 c.MapType<ShortGuid?>(...) .见 https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1648为了那个原因。

关于c# - Swashbuckle MapType<Type> 不适用于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com