【发布时间】: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<string> GetSupportedCatalogsForLanguage([FromUri] string languageCode) -
我认为招摇可能是正确的。如果您在 swagger 中展开该框,它是否会显示控制器中多个方法的不同查询参数?
标签: c# asp.net-web-api swagger swashbuckle