C# Swashbuckle:过时的模型属性显示没有改变招摇

rem*_*lam 5 c# swagger .net-core swashbuckle asp.net-core

我在我的(输入)模型中将一个属性标记为过时

public class MyModel
{
   [Obsolete("Use 'OtherProperty'")]
   public string SomeProperty {get;set;}


   public List<string> OtherProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

但是,swagger 没有显示这两个属性之间的区别,也没有显示消息。

有什么方法可以让我大摇大摆地尊重 Obsolete 属性?或者我需要自己把它放在属性上方的 xml-comments 中吗?

Hel*_*eda 3

不幸的是,Swashbuckle 上尚不支持过时的属性......

我们受到 OpenAPI 规范的限制,并且 Swashbuckle 仍然使用 2.0
最接近的东西已被弃用,但这仅适用于方法而不适用于属性:
https ://github.com/OAI/OpenAPI-Specification/blob/master/versions /2.0.md#操作对象

  • 一种选择是使用 来IDocumentFilter完全隐藏标记的属性Obsolete,但这将是一条崎岖的道路。

  • 另一种选择是创建两个方法和两个模型,这样您可以标记该方法,并将转换到其中的方法,所有内容都将被弃用(我认为这有点混乱),但我已经在许多网络中看到了这种模式-api

我认为你最好/最简单的解决方案是你建议添加一些 xml 注释,指出不应使用该属性。

  • OpenAPI 3.0 支持“已弃用”模型和属性。但 Swashbuckle 似乎还不支持。 (4认同)