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 的路由配置的主要内容,如果未能解决你的问题,请参考以下文章