我使用Asp.net web api創建api。我有控制器BookController
有兩種方法:ASP.NET web api使用相同聲明的兩種方法路由
GetBook(int id)
與給定的ID和GetBook(int userId)
返回給用戶
如果我把所有的書回到書localhost/book/3
存在模棱兩可,其中方法呼叫。我可以如何區分這兩種方法?
我使用Asp.net web api創建api。我有控制器BookController
有兩種方法:ASP.NET web api使用相同聲明的兩種方法路由
GetBook(int id)
與給定的ID和GetBook(int userId)
返回給用戶如果我把所有的書回到書localhost/book/3
存在模棱兩可,其中方法呼叫。我可以如何區分這兩種方法?
有一個在使用不同的HTTP動詞
[HttpGet]
public int GetUsers(int i) { return 0; }
[HttpPost]
public int GetBooks(int i) { return 1; }
哈克方式,但我認爲應該使用添加控制器或PARAM。
忘記黑客,這是常識。爲了您的用戶和開發人員的理智,只需更改路線和方法名稱,以清楚地區分這些不同的操作。一種解決方案可能是分別將Map/user/3/books和books/3分別映射到GetBooksByUser和GetBooks。使代碼和URI更具可讀性。
我會有2個控制器:書籍和用戶。 對於書籍:api/books/3將帶來書籍#3,並且對於用戶:api/users/3將帶來用戶#3。
您是否查看了ASP.NET Web API的基本教程?他們是偉大的,我跟在他們後面,這讓一切都很簡單:
這不會的WebAPI使用開箱即用的路由工作。它使用一個匹配語義的名稱,當http get進入時,它會查找以「Get ...」開頭的方法。因此,在發佈後,它會搜索名爲「Post ...」的方法,並且不會看到「GetBooks」。例如:http://stackoverflow.com/a/10471854/215068 – EBarr 2012-06-01 18:25:39