15

我正在使用 WebAPI版本控制包通过 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 ) 属性中命名空间的“VersionXYZ”后缀。理想情况下,我想做的是有一个顶级帮助页面,其中只有 API 版本号和钻取会以正常方式显示 API,即 ApiDescription.ID = GETapi/Products 和 ApiDescription.RelativePath = api/Products

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

4

2 回答 2

1

查看此答案获取帮助页面适用于 Api 版本控制

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

于 2014-11-23T13:23:25.977 回答
0

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

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

例如 Ver1_ProcuctsController

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

于 2014-10-08T15:26:53.350 回答