用于Web-API的路由配置

时间:2018-06-18 09:47:20

标签: c# asp.net-web-api asp.net-web-api-routing

我正在使用.Net 4.5.2创建Web-API服务。

我想拥有以下URI:

  • / api / v1 / timeseries / {id}
  • / API / V1 /时间序列/批准/ {ID}

有了这个,我希望有两个控制器:

  • TimeSeriesController
  • TimeSeriesApprovalController

使用如下的默认路由,我实现了我的第一个期望的结果(/api/v1/timeseries/{id}),但我不确定如何实现第二个结果。有人可以告诉我如何修改路由配置来处理第二个URI吗?

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes
    config.MapHttpAttributeRoutes();

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

1 个答案:

答案 0 :(得分:2)

一种选择是使用现有路线,并使用以下网址:

/api/v1/timeseriesapproval/{id}

请注意,这与您现有的路线完全匹配:

"api/v1/{controller}/{id}",

其中controllertimeseriesapproval匹配。

另一个选择是设置一个特定于此需求的新路线(在现有路线之前):

config.Routes.MapHttpRoute(name: "PutThisBeforeYourExistingOneApi",
    routeTemplate: "api/v1/timeseries/approval/{id}",
    defaults: new { controller = "TimeSeriesApproval", id = RouteParameter.Optional } );