gpt4 book ai didi

c# - 是否可以自定义 Swagger Schema?

转载 作者:行者123 更新时间:2023-12-05 06:41:52 25 4
gpt4 key购买 nike

是否可以为 ASP.NET CORE (C#) 自定义生成 Swagger 文档?具体来说,它似乎正在更改属性在我的模型中显示的顺序(即,它将派生类属性放在第一位)。

class BaseObj
{
string Username {get;set;}
string Password {get;set;}
}

class Obj2 : BaseObj
{
string SomeotherProp {get;set;}
}

Swagger 生成:

SomeotherProp
Username
Password

我希望 SomeotherProp 位于底部。我试过使用 Display(Order=1) 属性,但 Swagger 忽略了它。我没有在配置中看到任何可以自定义排序的 Hook 。

最佳答案

经过大量研究和反复试验,我偶然发现了答案。 Swagger 实际上并不直接反射(reflect)您的类型,而是使用 Json.Net 来获取类型模式。 Json.Net 尊重 JsonProperty 属性。因此,在我的基本类型上,我可以在属性上设置 JsonProperty=-2 让它们首先显示。请注意,您必须使用 -2 而不是 -1,因为它是保留的。通过使用 -2,您不必在所有派生类型上设置 JsonProperty。

这适用于我的情况,但我发现了另一篇文章,其中有人定义了自定义契约(Contract)解析器并在那里对属性进行了排序……这将比 JsonProperty 更通用、更简洁。不过,需要弄清楚如何将其连接到 Asp.net 核心。

但无论如何,重点是,时髦的排序来自 Json.net 而不是 Swagger。

关于c# - 是否可以自定义 Swagger Schema?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156322/

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