【问题标题】:Routing Config for Web-APIWeb-API 的路由配置
【发布时间】:2018-11-27 03:17:14
【问题描述】:

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

我想要以下 URI:

  • /api/v1/timeseries/{id}
  • /api/v1/timeseries/approval/{id}

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

  • 时间序列控制器
  • 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 }
    );
}

【问题讨论】:

  • @mjwills:谢谢。如果您想将此转移到答案,我会接受。关于 /TimeSeries/Approval 与 /TimeSeriesApproval,有约定吗?
  • 您已经在使用的DefaultApi 几乎是通常的约定 - 但两种类型的示例都有很多。选择您认为最适合您的方式。

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


【解决方案1】:

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

/api/v1/timeseriesapproval/{id}

请注意,这完全符合您现有的路线:

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

controller 匹配 timeseriesapproval

另一种选择是针对此需求设置一条新路线(在您现有路线之前):

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

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 2015-07-22
    • 1970-01-01
    • 2016-08-03
    • 2020-02-19
    • 2021-05-31
    • 1970-01-01
    • 2020-11-11
    • 2013-11-04
    相关资源
    最近更新 更多