首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用于.NET扩展的RAML工具防止RAML文档的重复条目

使用用于.NET扩展的RAML工具防止RAML文档的重复条目
EN

Stack Overflow用户
提问于 2015-12-11 03:34:51
回答 1查看 544关注 0票数 1

我刚刚开始使用这个工具来定义一个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创建,所以我在这里可能遗漏了一些显而易见的东西.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 17:40:46

元数据(动态生成的raml)捕获所有路由。您的WebApi配置方式使每个动作/控制器有两条不同的路由。这反映在api控制台中(问题中的图片)。

你用"Add RAML合同“创建的控制器.命令使用属性路由(生成的控制器和操作中的RoutePrefix和路由属性)。

并且您还有默认路由"api/{controller}/{id}“。

看看WebApiConfig.cs,您会发现以下内容:

代码语言:javascript
复制
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

因此,例如,OpertatorsController / Get由这两条不同的路由调用:

/operators (使用通过属性配置的路由)

/api/操作符(使用"DefaultApi“路由)

如果删除"DefaultApi“路由,则每个操作只有一个路由,因此复制将消失。

注意:元数据完全不使用baseUri。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34215676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档