【问题标题】:Methods don't show in Swagger UI (w/ Swashbuckle) but no error message方法不显示在 Swagger UI(带 Swashbuckle)中,但没有错误消息
【发布时间】:2017-08-15 03:43:21
【问题描述】:

我正在用 Swashbuckle 编写一个 api,但遇到了问题。我的 AController 中有三个 Get 方法:

[ResponseType(typeof(IEnumerable<A>))]
public IHttpActionResult Get(int bId);

[ResponseType(typeof(IEnumerable<A>))]
public IHttpActionResult Get(IList<int> cIds);

[ResponseType(typeof(IEnumerable<A>))]
public IHttpActionResult Get(int bId, IList<int> cIds);

我希望出现有关重载端点的错误,或者它可以与具有两个可选参数的单个 get 方法一起使用,涵盖所有情况。相反,我只显示第二种方法,这似乎是任意的。

我想知道,有没有什么方法可以让这三种方法都起作用,另外,第二种方法显示在 UI 中是否有任何理由?谢谢!

【问题讨论】:

  • 您能否提供更完整的接口和类实现示例?我对SwaggerSwashbuckle 都不熟悉,但我猜您的问题不在您在此处发布的内容中。或者,您可能没有进行良好的重建。尝试彻底清理您的解决方案...进入文件夹并手动删除解决方案的每个项目中的所有 binobj 文件夹。然后进行新的构建。
  • 感谢您的建议,我已经排除了重建的可能性,它没有帮助。我即将编辑以添加更多细节,但我知道 Swagger 对 api 的设计非常挑剔。例如,人们会遇到的一个常见问题是:github.com/domaindrivendev/Swashbuckle/issues/142
  • 你能达到所有三种方法吗?我猜只有一种方法设置了路由。

标签: c# swagger swashbuckle


【解决方案1】:

要回答您的第一个问题,您可以通过为这三种 GET 方法定义不同的端点来使它们都能正常工作。对于每个 GET 方法,添加以下属性:[HttpGet("the_end_point_you_want")]。

即)

[HttpGet("/GetbID/{bId})")
[ResponseType(typeof(IEnumerable<A>))]
public IHttpActionResult Get(int bId)

[HttpGet("/GetListcId")]
[ResponseType(typeof(IEnumerable<A>))]
public IHttpActionResult Get(IList<int> cIds)

对于您的第二个问题,我不确定为什么选择第二个 GET,但我的猜测是 SwashBuckle 如何检索每个 GET 方法。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2020-06-21
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多