如何检索给定HttpRequestMessage的路由模板变量

本文关键字:HttpRequestMessage 路由 变量 何检索 检索 | 更新日期: 2023-09-27 18:12:32

我有两个API控制器位于两个不同的文件夹,有GetEvents()操作:

V1
  EventsController
V2
  EventsController

我希望能够访问控制器使用:

 api/v1/events and api/v2/events

我的路由模板是这样的

api/v{version}/{controller}

私有静态字符串GetRequestVersion(HttpRequestMessage请求){

//如何从url中找到{version}值?

}

我已经写了一个代码使用REGEX工作良好:

 private static string ExtractVersionFromUrl(HttpRequestMessage request)
        {
            Match match = Regex.Match(request.RequestUri.PathAndQuery, @"/v(?<version>'d+)/", RegexOptions.IgnoreCase);
            return match.Success ? match.Groups["version"].Value : null;
        }

从uri中检索这些数据的标准方法是什么?

如何检索给定HttpRequestMessage的路由模板变量

试试,

Request.GetRouteData().Values["version"];

GetRouteData是一个扩展方法,可以在命名空间System.Net.Http中使用。

我在冒险猜测返回值。另一种方法是简单地将其定义为控制器方法中的一个参数,如下所示:

public IEnumerable<Event> GetEvents(string version, HttpRequestMessage request) {
...
}

我自己刚弄明白。Web API真是太美了!

相关文章:
  • 没有找到相关文章