1

我猜测答案是多条路线,但是我们的路线列表开始变长了,所以我想看看这是否可以更优雅、更简单地表达。:)

在我当前的示例中,我想创建一个具有多个选项的路线,其中一些元素是可变的,而另一些则不是。

因此,一个示例 URI 将是:

http://localhost/api/schedules/10/instances/5

匹配的路由定义将是:

api/schedules/{id}/instances/{item}

可能的端点是:

http://localhost/api/schedules/10 // returns schedule number 10
http://localhost/api/schedules/10/instances // returns all instances in schedule 10
http://localhost/api/schedules/10/instances/5 // returns 5th instance in schedule 10

似乎引起麻烦的是希望在两个可选参数之间有一个固定的关键字。我尝试了以下定义(和几个变体):

RouteTable.Routes.MapHttpRoute(
    "RouteName",
    "api/schedules/{id}/instances/{item}",
    new {
        id = RouteParameter.Optional,
        instances = RouteParameter.Optional,
        item = RouteParameter.Optional,
        controller = "SomeController"
    }
)     

使用该路线,仅点击 /schedules/10 无法识别,并且 /schedules/10/instances 和 schedules/10/instances/5 都返回 schedules/10/instances 结果。

这是否可能以某种方式,或者我应该制作两条路线,一条用于/schedules/{id},一条用于/schedules/{id}/instances/{item}?

作为旁注,我正在开发一个 Web API 项目,但据我所知,这只是 MVC 解决方案的一个特定案例,所以我将两者标记为 MVC 和 Web API。

4

1 回答 1

1

是的,您可以在此处查看我的答案,以获得有关如何实现您想要的目标的完整说明。

MVC 4.5 Web API 路由不起作用?

于 2013-06-27T12:10:04.213 回答