使用 .NET 扩展的 RAML 工具防止 RAML 文档的重复条目
Prevent duplicate entries for RAML documentation using RAML tools for .NET extension
我刚刚开始使用此工具在 .NET 中定义 API 和构建 Web API 代码。 https://visualstudiogallery.msdn.microsoft.com/cadcb820-762c-4514-9817-884b7558aaa9
我添加了一个 RAML 合约,它在解决方案中创建了一堆控制器和合约。我还有 运行 启用元数据输出的功能。当我转到 /raml 页面时,我可以看到很棒的 API 规范。但是,我得到了所有内容的两个版本,而且我不确定要更改什么以防止它发生。
例如,在我的 .raml 文件中,我有一个名为 "operators" 的资源。使用这些工具创建一个名为 "OperatorsController" 的控制器。 .raml 定义文件中的baseUri 为http://localhost:51366/api/,WebApiConfig.Register 函数的MapHttpRoute 设置为api/{controller}/{id} 的routeTemplate。在 /raml 页面上有一个 /bookings 条目和一个 /api/Bookings 条目。第一个似乎来自 .raml 规范,第二个似乎来自创建的 BookingsController。
知道如何防止 duplicates.It 是我第一次玩 api 创建,所以我可能在这里遗漏了一些明显的东西...
元数据(动态生成的 raml)捕获您的所有路线。您的 WebApi 配置为每个 action/controller 有两条不同的路由。这反映在 api 控制台(您问题中的图片)中。
您使用"Add RAML Contract..."命令创建的控制器使用属性路由(生成的Controller和Actions中的RoutePrefix和Route属性)
并且您还有默认路由 "api/{controller}/{id}"。
看看 WebApiConfig.cs 你会发现:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
因此,例如 OpertatorsController / Get 被这两个不同的路由调用:
/operators(使用通过属性配置的路由)
/api/operators(使用"DefaultApi"路线
如果您删除 "DefaultApi" 路线,您将只有一个路线用于每个操作,因此重复将消失。
注意:baseUri 根本不用于元数据
我刚刚开始使用此工具在 .NET 中定义 API 和构建 Web API 代码。 https://visualstudiogallery.msdn.microsoft.com/cadcb820-762c-4514-9817-884b7558aaa9
我添加了一个 RAML 合约,它在解决方案中创建了一堆控制器和合约。我还有 运行 启用元数据输出的功能。当我转到 /raml 页面时,我可以看到很棒的 API 规范。但是,我得到了所有内容的两个版本,而且我不确定要更改什么以防止它发生。
例如,在我的 .raml 文件中,我有一个名为 "operators" 的资源。使用这些工具创建一个名为 "OperatorsController" 的控制器。 .raml 定义文件中的baseUri 为http://localhost:51366/api/,WebApiConfig.Register 函数的MapHttpRoute 设置为api/{controller}/{id} 的routeTemplate。在 /raml 页面上有一个 /bookings 条目和一个 /api/Bookings 条目。第一个似乎来自 .raml 规范,第二个似乎来自创建的 BookingsController。
知道如何防止 duplicates.It 是我第一次玩 api 创建,所以我可能在这里遗漏了一些明显的东西...
元数据(动态生成的 raml)捕获您的所有路线。您的 WebApi 配置为每个 action/controller 有两条不同的路由。这反映在 api 控制台(您问题中的图片)中。
您使用"Add RAML Contract..."命令创建的控制器使用属性路由(生成的Controller和Actions中的RoutePrefix和Route属性)
并且您还有默认路由 "api/{controller}/{id}"。
看看 WebApiConfig.cs 你会发现:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
因此,例如 OpertatorsController / Get 被这两个不同的路由调用:
/operators(使用通过属性配置的路由)
/api/operators(使用"DefaultApi"路线
如果您删除 "DefaultApi" 路线,您将只有一个路线用于每个操作,因此重复将消失。
注意:baseUri 根本不用于元数据