匹配URI的一部分

时间:2015-03-30 00:33:05

标签: c# api uri

我在C#中编写API,并想知道是否有办法仅在URI的一部分上执行UriTemplateMatch(忽略查询参数/路径)。

我问的原因是因为我有一个父HttpHandler类,它将请求委托给请求的相应Handler,例如:

// Parent templates
var playerTemplate = new UriTemplate("/v1/player/");
var gameTemplate   = new UriTemplate("/v1/games/");

但是请求可能会出现:

http://server.com/v1/games/EU?played=today

我的处理程序方法目前执行如下检查:

public void ProcessRequest(HttpContext context) 
{
    UriTemplateMatch res = null;
    HttpRequest Request = context.Request;
    Uri requestedUri = new Uri(prefix + context.Request.RawUrl);

    // Check if the template matches, if it did then delegate context to Game Handler
    res = playerTemplate.Match(prefix, requestedUri);
    if (res != null)
        ASGameHandler.ProcessRequest(context);

    // Other templates are matched below
    ...
}

但是,如果传递带有查询参数的URI,它显然会为null。如何在委托给子处理程序之前,只提取模板中保存的URI组件来执行匹配?

0 个答案:

没有答案