【问题标题】:Web Api Routing conflictWeb API 路由冲突
【发布时间】:2015-01-22 21:08:59
【问题描述】:

参数类型存在 Web api 配置问题。 我需要识别两种类型的参数,一种是int,另一种是boolean。在 WebApi 配置中,默认路由设置为"api/{controller}/{id}",当我解析整数时就可以了,但我还需要解析布尔参数。 因此,当我转到/api/controller/1 url 时,我需要它转到带有int 输入参数的Action,当我转到/api/controller/{true|false} url 时,我需要它转到输入为boolean 的Action。

有什么解决办法吗? 谢谢

【问题讨论】:

  • 我相信你可以使用api/{controller}/{id:bool} 约束。这对你有什么作用?
  • 它将 url ("api/{controller}/int|bool") 重定向到 api/{controller } 操作

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


【解决方案1】:

使用RouteRoutePrefix 过滤器属性,如Attribute Routing in Web Api 2Create a REST API with attribute routing 中所述。

由于我不了解您的 api 控制器及其方法的整体结构,因此我只能在此处为上述属性举两个示例。通常,我们放置Route 属性来过滤与控制器相关的请求。你的问题可能是这样的:

[RoutePrefix("api/{controller}")]

为了过滤每个方法的特定请求,我们在每个方法之前使用Route 属性,例如在您的问题中,它可以是boolean 输入法的下面一行代码:

[Route("{id:bool}")]

当我放置 2 个链接时,您需要了解一些使用上述属性的规则。

【讨论】:

  • 现在它返回:“找到与请求匹配的多个操作:...”
  • 编辑后它不起作用,将其重定向到 api/{controller } 操作。你能提供一些更详细的例子吗?
  • @HodzaNdzaho 我完全改变了答案。请阅读相关的 2 篇文章,以完全了解您的要求。
猜你喜欢
  • 2020-07-23
  • 2015-11-14
  • 2014-05-28
  • 2018-02-28
  • 2021-08-24
  • 2011-11-05
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多