routing - 路由中的多个 Controller

标签 routing asp.net-web-api

我可能有一个蹩脚的问题,但我在一个 Url 中路由多个 Controller 时遇到了一些困难。所以我的问题是如何使用这样的网址:

GET http://foo.com/API/Devices/2/Parameters/2

最终在哪里deviceparameters都是 Controller ,数字是 ID。我每个人都有 Controller ,但是如何处理它们,将它们路由到适当的 Controller ?

有什么方向可以看吗?

更新:
只是为了澄清我最终使用的解决方案并遵循以下答案。

路由片段:

config.Routes.MapHttpRoute(
            name: "DeviceCommandsControllerHttpRoute", 
            routeTemplate: "api/devices/{deviceId}/commands/{id}", 
            defaults: new { controller = "devicecommands", id = RouteParameter.Optional }
        );

Controller 片段:

[HttpGet]
public DeviceCommand GetById(int id, int deviceId)
    { ... }

最后是网址:
GET http://localhost:49479/api/Devices/2/Commands/1

最佳答案

我现在有类似的需求,我有以下路由结构:

public static void RegisterRoutes(HttpRouteCollection routes) {

    routes.MapHttpRoute(
        "UserRolesHttpRoute",
        "api/users/{key}/roles",
        new { controller = "UserRoles" });

    routes.MapHttpRoute(
        "AffiliateShipmentsHttpRoute",
        "api/affiliates/{key}/shipments",
        new { controller = "AffiliateShipments" });

    routes.MapHttpRoute(
        "ShipmentStatesHttpRoute",
        "api/shipments/{key}/shipmentstates",
        new { controller = "ShipmentStates" });

    routes.MapHttpRoute(
        "AffiliateShipmentShipmentStatesHttpRoute",
        "api/affiliates/{key}/shipments/{shipmentKey}/shipmentstates",
        new { controller = "AffiliateShipmentShipmentStates" });

    routes.MapHttpRoute(
        "DefaultHttpRoute",
        "api/{controller}/{key}",
        new { key = RouteParameter.Optional });
}
我认为您可以基于此弄清楚如何实现您的。

关于routing - 路由中的多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794029/

相关文章:

routing - 使用 OpenCart 路由器类清理 URL

c# - 为什么尾随 %20(在本例中为有效数据)会终止 asp.net mvc 路由

asp.net-web-api - System.Web.Http.GlobalConfiguration 不包含“配置”的定义

c# - 在 C# Web API 的 Controller 中隐藏模型类成员?

c# - 如何让 HttpClient 随请求一起传递凭据?

asp.net-web-api - 如何使用 Web API 中的属性路由通过 URI 发送数组?

ruby-on-rails-3 - 使用 RSpec 2 和 Rails3 测试嵌套命名空间 Controller

ASP.NET 路由 : Literal sub-segment between tokens, 并使用文字子段中的字符路由值

c# - 从 WebAPI 2 端点返回自定义 HTTP 状态代码

php - 如何强制 https 用于 prod 但 http 用于开发环境?