【发布时间】:2014-02-04 02:12:43
【问题描述】:
我正在研究如何为以下 Web API 控制器进行路由:
public class MyController : ApiController
{
// POST api/MyController/GetAllRows/userName/tableName
[HttpPost]
public List<MyRows> GetAllRows(string userName, string tableName)
{
...
}
// POST api/MyController/GetRowsOfType/userName/tableName/rowType
[HttpPost]
public List<MyRows> GetRowsOfType(string userName, string tableName, string rowType)
{
...
}
}
目前,我正在为 URL 使用此路由:
routes.MapHttpRoute("AllRows", "api/{controller}/{action}/{userName}/{tableName}",
new
{
userName= UrlParameter.Optional,
tableName = UrlParameter.Optional
});
routes.MapHttpRoute("RowsByType", "api/{controller}/{action}/{userName}/{tableName}/{rowType}",
new
{
userName= UrlParameter.Optional,
tableName = UrlParameter.Optional,
rowType= UrlParameter.Optional
});
但目前只有第一种方法(带有 2 个参数)有效。我是在正确的路线上,还是我的 URL 格式或路由完全错误?路由对我来说似乎是黑魔法......
【问题讨论】:
-
如何指定一个非可选参数?我希望第一个是必需的,第二个是可选的?
-
路由只是 IMO 在 webapiconfig 中做的更痛苦,请参阅我对 Route 属性路由的回答
标签: c# asp.net-web-api asp.net-web-api-routing