【问题标题】:Is it possible to include the method name for an endpoint through Swashbuckle?是否可以通过 Swashbuckle 包含端点的方法名称?
【发布时间】:2018-03-29 13:51:53
【问题描述】:

所以我正在尝试为通过 .NET Web API 创建的一组旧 REST 端点添加 API 文档。有人建议我尝试使用 Swashbuckle 从现有端点生成文档,这很有效。

我的问题是这些端点的名称提供了一些上下文,而 Swashbuckle 似乎只拾取控制器而不是实际的方法名称。例如,我有以下端点:

public class CatalogAvailabilityController
{
    public List<string> GetSupportedCatalogsForCountry([FromUri] string countryCode)
    {
        //--return supported catalogs
    }
}

在这种情况下,生成的 Swagger 会输出如下内容:

基本上,它只在 URL 中包含控制器名称 (CatalogAvailability),但我希望它在 URL 中也包含“GetSupportedCatalogsForCountry”。有没有办法让 Swashbuckle 像这样生成它,还是我需要求助于自己创建 Swagger?

是的,理想情况下,它可能不应该像这样设置,它应该更 RESTful,但它是一个较旧的遗留系统,需要大量的努力来重构,所以我想我会先问。提前谢谢你。

【问题讨论】:

  • 这样做不是因为那是该方法定义的端点吗?喜欢this?这样 GET /api/catalogAvailability?countryCode=gb 将路由到 GetSupportedCatalogsForCountry?
  • @LewisTaylor 如果控制器中的唯一方法是 GetSupportedCatalogsForCountry,那么是的,它将路由到该方法,因为它是唯一的 GET。但是,我有多个 GET 方法。我只在这个问题中包含了一个以使其更简单
  • 控制器/swagger中的其他方法是什么样的?是否仅基于method parameters 进行路由?
  • 类似:public List&lt;string&gt; GetSupportedCatalogsForLanguage([FromUri] string languageCode)
  • 我认为招摇可能是正确的。如果您在 swagger 中展开该框,它是否会显示控制器中多个方法的不同查询参数?

标签: c# asp.net-web-api swagger swashbuckle


【解决方案1】:

是的!将 Attributes 添加到您的操作并将 Route 属性添加到您的控制器。

public class CatalogAvailabilityController
{
    [HttpGet]
    public List<string> GetSupportedCatalogsForCountry([FromUri] string countryCode)
    {
        //--return supported catalogs
    }
}

【讨论】:

    【解决方案2】:

    以下交叉思维者回答:

    public class CatalogAvailabilityController
    {
        [HttpGet("GetSupportedCatalogsForCountry")]
        public List<string> GetSupportedCatalogsForCountry([FromUri] string countryCode)
        {
             //--return supported catalogs
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-09
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多