Web-API 的路由配置

Posted

技术标签:

【中文标题】Web-API 的路由配置【英文标题】:Routing Config for Web-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 几乎是通常的约定 - 但两种类型的示例都有很多。选择您认为最适合您的方式。 【参考方案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  );

【讨论】:

以上是关于Web-API 的路由配置的主要内容,如果未能解决你的问题,请参考以下文章

华为[ENSP]VLAN间路由的配置(单臂路由、多臂路由的配置)

宁静服务的路由策略

如何静态路由配置?

ensp 配置静态路由的步骤

cisco Switching-三层交换配置RIP动态路由

如何配置默认路由?