我刚刚开始使用这个工具来定义一个API,并在.NET中搭建Web代码的脚手架。https://visualstudiogallery.msdn.microsoft.com/cadcb820-762c-4514-9817-884b7558aaa9,我添加了一个RAML契约,它在解决方案中创建了一堆控制器和契约。我还运行了这个函数来启用元数据输出。当我进入/raml页面时,我可以看到API,这是很棒的。然而,我得到了两个版本的所有东西,我不知道应该改变什么来防止它。例如,在我的.raml文件中,我有一个名为"operators“的资源。使用这些工具可以创建一个名为"OperatorsController“的控制器。baseUri定义文件中的.raml为http://localhost:51366/api/,WebApiConfig.Register函数的MapHttpRoute设置为routeTemplate /{controller}/{id}。在/raml页面上有一个/bookings条目和一个/api/订票条目。第一个似乎来自.raml规范,第二个来自创建的BookingsController。

你知道怎么防止复制吗?这是我第一次玩api创建,所以我在这里可能遗漏了一些显而易见的东西.
发布于 2015-12-11 17:40:46
元数据(动态生成的raml)捕获所有路由。您的WebApi配置方式使每个动作/控制器有两条不同的路由。这反映在api控制台中(问题中的图片)。
你用"Add RAML合同“创建的控制器.命令使用属性路由(生成的控制器和操作中的RoutePrefix和路由属性)。
并且您还有默认路由"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/操作符(使用"DefaultApi“路由)
如果删除"DefaultApi“路由,则每个操作只有一个路由,因此复制将消失。
注意:元数据完全不使用baseUri。
https://stackoverflow.com/questions/34215676
复制相似问题