我在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组件来执行匹配?