【问题标题】:Generating version specific help documentation pages for ASP.NET Web API application为 ASP.NET Web API 应用程序生成特定于版本的帮助文档页面
【发布时间】:2013-01-18 00:53:42
【问题描述】:

我正在使用 WebAPI Versioning package 通过 X-Api-Header 使用“VersionHeaderVersionedControllerSelector”对我的 API 进行版本控制。我还使用Microsoft.AspNet.WebApi.HelpPage 自动生成 API 文档。 为了使控制器 versionign 工作,它们需要以 VersionXYZ 作为命名空间中的后缀进行命名空间,以便“VersionHeaderVersionedControllerSelector”能够将请求路由到适当版本的控制器,如下所示:

namespace WEBAPI.Api.Controllers.Version1
{ public class ProductsController : ApiController {} }

namespace WEBAPI.Api.Controllers.Version2
{ public class ProductsController : ApiController {} }

这按预期工作,但是当我查看生成的帮助页面时,ApiDescription 在 ID (GETapi/Version1.Products) 和 RelativePath( api/Version1.Products) 属性。 理想情况下,我想做的是有一个顶级帮助页面,其中只有 API 版本号和钻取会以正常方式显示 API,即 ApiDescription.ID = GETapi/Products 和 ApiDescription.RelativePath = api/Products

有没有办法使用开箱即用的 API 来实现这一点,还是我需要推出自己的 ApiExplorer 实现

【问题讨论】:

  • 你有没有找到解决这个问题的方法?
  • 是asp.net web api 2.0吗?

标签: asp.net-web-api asp.net-web-api-routing


【解决方案1】:

很遗憾,ApiExplorer 不支持重复的控制器名称。因此,通过这种方式实现控制器版本控制,您的(或包代码)不能很好地与系统配合使用。

考虑另一种实际更改控制器名称的替代方案(是的,您必须实现自己的解决方案,但老实说它并不复杂)。例如,使版本成为控制器名称本身的一部分(而不是其名称空间)。

例如Ver1_ProcuctsController

现在这些将开始显示在您的帮助页面上,并且由于帮助页面只是内容包,您可以更改逻辑以使以 verxxx_ 开头的名称发生变异。

【讨论】:

    【解决方案2】:

    看看这个答案Get Help page works with Api Versioning

    确保你已经配置了版本控制权,并且你需要从你的项目 XXXX.Api.v1 项目中获取一个文档 XML 文件并将它放在 XXXX.Api 项目的 bin 文件夹中。

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多