2012-03-13 75 views
0

我使用Asp.net web api創建api。我有控制器BookController有兩種方法:ASP.NET web api使用相同聲明的兩種方法路由

  • GetBook(int id)與給定的ID和
  • GetBook(int userId)返回給用戶

如果我把所有的書回到書localhost/book/3存在模棱兩可,其中方法呼叫。我可以如何區分這兩種方法?

回答

0

有一個在使用不同的HTTP動詞

[HttpGet] 
public int GetUsers(int i) { return 0; } 

[HttpPost] 
public int GetBooks(int i) { return 1; } 

哈克方式,但我認爲應該使用添加控制器或PARAM。

+0

這不會的WebAPI使用開箱即用的路由工作。它使用一個匹配語義的名稱,當http get進入時,它會查找以「Get ...」開頭的方法。因此,在發佈後,它會搜索名爲「Post ...」的方法,並且不會看到「GetBooks」。例如:http://stackoverflow.com/a/10471854/215068 – EBarr 2012-06-01 18:25:39

7

忘記黑客,這是常識。爲了您的用戶和開發人員的理智,只需更改路線和方法名稱,以清楚地區分這些不同的操作。一種解決方案可能是分別將Map/user/3/books和books/3分別映射到GetBooksByUser和GetBooks。使代碼和URI更具可讀性。

0

我會有2個控制器:書籍和用戶。 對於書籍:api/books/3將帶來書籍#3,並且對於用戶:api/users/3將帶來用戶#3。

您是否查看了ASP.NET Web API的基本教程?他們是偉大的,我跟在他們後面,這讓一切都很簡單:

http://www.asp.net/web-api/overview