【问题标题】:What does the attribute "[ApiExplorerSettings(IgnoreApi = true)]" do?属性“[ApiExplorerSettings(IgnoreApi = true)]”有什么作用?
【发布时间】:2019-08-19 15:02:21
【问题描述】:

编辑:我知道一般属性的作用,问题仅针对此特定属性。很抱歉造成混乱!

我已经阅读了以下 question 以及 this 一个,其中指出了如何使用该属性来忽略生成的 swagger/swashbuckle 文档对于特定方法或整个控制器。 (文档是我相信列出了所有 api 的招摇页面?)

但是除了swagger/swashbuckle(这是一个NuGet包),这个属性在ASP.NET中还有什么其他的功能呢?

【问题讨论】:

  • 不清楚您是完全不知道属性是什么,还是您了解属性但不了解该特定属性的作用。两个可能的答案大相径庭(尽管由于缺乏研究证据,任何一个问题都可能被否决,而第一个问题也可能因过于宽泛而被关闭)
  • 属性只是一个标记,它本身并不“拥有”功能或触发行为。所以,也许其他库可以利用这个属性;它很可能是通过反射读取的,但这是您阅读或添加使用它的 NuGet 包的选择。除了 Swagger,对于“简单”的 ASP.NET 应用程序,在核心 Microsoft / ASP.NET 包中,我认为它没有任何特殊用途。 (顺便说一下,据我所知,Swagger 不是基本 MS 软件包的一部分)
  • 谢谢@Pac0!这是我最初的担忧。我知道它有一些用于 swagger/swashbuckle 的功能,它是一个 nugget 包,但我想知道它是否有一些用于 ASP.NET 的功能,你回答了!
  • 我认为这是一个有用的问题。我也将把它添加到我的 API 中,我也担心添加它可能会产生一些意想不到的后果。所以这对我很有帮助。

标签: c# asp.net swagger


【解决方案1】:

当应用于控制器上的公共方法时,它会阻止该方法出现在 swagger ui 中。

【讨论】:

    【解决方案2】:

    首先,澄清一下,C# 中的属性本身不会触发任何事情。外部代码搜索标有特定属性的类、方法或属性,并采取相应措施。

    当然,ASP.NET MVC 中有很多构建块,有时会让人感到困惑。

    正如您所注意到的,此属性由 Swagger 使用,并且(至少在 .NET 核心中)由IApiDescriptionProvider 和其他相关接口的给定实现使用,但只有在您实际使用它们时才会有效(通过配置它们在 Startup.cs 中)

    (有关更多详细信息和示例,请参阅https://andrewlock.net/introduction-to-the-apiexplorer-in-asp-net-core/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      相关资源
      最近更新 更多