我的 WebAPI 项目中有一个名为 News 的控制器,我有两个名为 Get 的默认操作,用于处理以下 URL:
/api/News <- 这会返回一个新闻列表 /api/News/123 <- 这会通过 id 返回一个特定的新闻项目。
到目前为止,一切都很简单,显然默认路由可以处理这些场景。我接下来想要一个如下所示的 URL:
/api/News/123/Artists <- 将返回与指定新闻项目相关的所有艺术家。
现在我对 ASP.Net MVC 和 WebAPI 相当陌生,所以这是我第一次不得不处理路由。我已将默认路由修改为如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{id}/{action}",
defaults: new { controller = "News", action = "Get", id = UrlParameter.Optional }
所以在这里我将 {action} 移到了 URL 的末尾,并在我的 News 控制器中添加了一个 Artists 方法。这仍然适用于前两种情况,但在第三种情况下返回 404。
显然路由不适用于 /api/News/123/Artists 但我不知道为什么。
我似乎找不到任何使用这样的 WebAPI 的人的例子,这让我觉得我做的事情根本上是错误的。
任何帮助,将不胜感激。