问题描述
我试图找出如何做路由以下的Web API控制器:
I'm trying to work out how to do the routing for the following Web API controller:
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)
{
...
}
}
目前,我使用这个路由的网址:
At the moment, I'm using this routing for the URLs:
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格式或路由完全错了吗?路由看起来像黑魔法我...
but only the first method (with 2 parameters) is working at the moment. Am I on the right lines, or have I got the URL format or routing completely wrong? Routing seems like black magic to me...
推荐答案
问题是你的 API / myController的/ GetRowsOfType /用户名/ tableName值/ ROWTYPE
URL将始终匹配第一条路线所以第二个是从未达到。
The problem is your api/MyController/GetRowsOfType/userName/tableName/rowType
URL will always match the first route so the second is never reached.
简单的修复,先注册你的 RowsByType
路线。
Simple fix, register your RowsByType
route first.
这篇关于有多个参数的Web API路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!