2014-01-31 62 views
0

在ASP.NET Web API中,如何獲得兩個操作,都是通過相同的URL和相同的HTTP方法進行路由,只能通過其不同的參數類型進行Distingushable操作?只能通過參數類型區分Web API操作?

我希望能夠POST無論是單個JSON對象還是JSON數組對象。

我期待像這樣的工作:

[HttpPost] 
public virtual object Post([FromBody]IDictionary<string, object> values) 
{ 
    //add new object to collection 
} 

[HttpPost] 
public virtual IEnumerable<object> Post([FromBody] IDictionary<string, object>[] array) 
{ 
    return array.Select(Post); 
} 

但是,如果我這樣做,並嘗試調用任何行動,我得到這個錯誤:

Multiple actions were found that match the request 
+0

可能是這可能是一個幫助:http://stackoverflow.com/questions/11407267/multiple-httppost-method-in-web-api-controller – Habib

回答

0

看一看該庫爲attribute routing庫。這使您可以爲web api中的每個操作定義路由。這甚至已被封裝成Web Api 2.0的一部分:

[POST("First URL here")] 
public virtual object Post([FromBody]IDictionary<string, object> values) 
{ 
    //add new object to collection 
} 

[POST("Second URL here")] 
public virtual IEnumerable<object> Post([FromBody] IDictionary<string, object>[] array) 
{ 
    return array.Select(Post); 
} 

這樣你就可以爲每種方法手動定義路由。

+0

感謝您的答案。我忘了提及我希望他們也是同一個URL(更新了問題)。否則,我可以在'WebApiConfig.cs'中設置另一條路徑。 – Connell

+0

請注意,屬性路由內置於Web Api 2本身 –

相關問題