ASP.NET web api路由的两个方法具有相同的声明

时间:2012-03-13 09:09:56

标签: asp.net-web-api

我正在使用Asp.net web api创建一个api。我有两个方法控制器BookController

  • GetBook(int id)返回给定ID和
  • 的图书
  • GetBook(int userId)返回给定用户的所有图书

如果我打电话给localhost/book/3,那么调用哪种方法存在歧义。我如何区分这两种方法?

3 个答案:

答案 0 :(得分:7)

忘记黑客,这是常识。为了您的用户和开发人员的理智,只需更改路由和方法名称,以明确消除这些不同操作的歧义。一种解决方案可能是Map / user / 3 / books和books / 3分别为GetBooksByUser和GetBooks。使代码和URI更具可读性。

答案 1 :(得分:0)

使用不同的http动词有一种hacky方法

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

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

但我认为使用应该添加控制器或参数。

答案 2 :(得分:0)

我会有2个控制器:书籍和用户。 对于书籍:api / books / 3将带来第3册,对于用户:api / users / 3将带来#3用户。

您是否查看了ASP.NET Web API的基本教程?他们很棒,我跟着他们,这很简单:

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