是否可以自定义Swagger架构?

时间:2016-08-25 23:39:18

标签: c# asp.net-core swagger swagger-ui swagger-2.0

是否可以为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忽略了这一点。我没有在配置中看到任何可以自定义排序的钩子。

1 个答案:

答案 0 :(得分:1)

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

这将适用于我的情况,但我找到了另一篇文章,其中该人定义了一个自定义合同解析器并对其中的属性进行了排序......这将比JsonProperty更通用,更清晰。需要弄清楚如何将其挂钩到Asp.net核心。

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