我使用示例网址设置了以下路由:
// /v1/account/getAccount/24/transaction
config.Routes.MapHttpRoute(
name: "FunctionAPI",
routeTemplate: "v1/{controller}/{task}/{key}/{function}",
defaults: new { }
);
// /v1/account/getAccount/24
config.Routes.MapHttpRoute(
name: "KeyAPI",
routeTemplate: "v1/{controller}/{task}/{key}",
defaults: new { }
);
// /v1/account/getAccount
config.Routes.MapHttpRoute(
name: "TaskAPI",
routeTemplate: "v1/{controller}/{task}",
defaults: new { }
);
这些示例网址中的每个网址上都可以包含可选的查询字符串。例如/ v1 / account / getAccount / 24?filters = hello
具有以下类别:
[HttpGet]
public JArray GetAccount()
{
Console.WriteLine("Get Account");
}
[HttpGet]
public JArray GetAccount(string task, int key, string filters)
{
Console.WriteLine("Get Account with optional filters");
}
[HttpGet]
public JArray GetAccount(string task, int key, string function, string filters)
{
Console.WriteLine("Get Account with function and / or optional filters");
}
但是,如果我包括querystring,这似乎只属于正确的类。在大多数情况下,当不包括查询字符串时,它属于GetAccount()。
/ v1 /帐户/ getAccount / 24 /交易= GetAccount / v1 / account / getAccount / 24 / transaction?filters = hello =使用功能和/或可选过滤器获取帐户 / v1 / account / getAccount / 24?filters = hello =使用可选过滤器获取帐户 / v1 / account / getAccount / 24 =获取帐户
如何更新这些路由以使其能够与可选查询字符串一起使用? 字符串已经可以为空。我无法创建用于处理所有情况的函数,因为/ v1 / account / getAccount / 24 / transaction vs / v1 / account / getAccount / 24?filters = hello存在问题,因为它们都是字符串,整数,字符串。
谢谢!