ASP.NET web api маршрутизация двух методов с одинаковым объявлением - PullRequest
0 голосов
/ 13 марта 2012

Я создаю API, используя веб-API Asp.net.У меня есть контроллер BookController с двумя методами:

  • GetBook(int id), который возвращает книгу с указанным идентификатором, и
  • GetBook(int userId), который возвращает все книги данного пользователя

Если я вызываю localhost/book/3, возникает неопределенность в том, какой метод вызывать. Как я могу различить два метода?

Ответы [ 3 ]

7 голосов
/ 21 марта 2012

Забудьте о взломе, это здравый смысл. Для здравого смысла ваших пользователей и разработчиков просто измените маршруты и имена методов, чтобы четко устранить неоднозначность этих различных операций. Одним из решений может быть Map / user / 3 / books и books / 3 для GetBooksByUser и GetBooks соответственно. Делает код и URI более читабельными.

0 голосов
/ 27 апреля 2012

У меня было бы 2 контроллера: Книги и Пользователи. Для книг: api / books / 3 принесет книгу № 3, а для пользователей: api / users / 3 принесет пользователя № 3.

Вы ознакомились с основными учебными пособиями по ASP.NET Web API? Они великолепны, я следил за ними, и все очень просто:

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

0 голосов
/ 13 марта 2012

Существует хакерский способ использования различных http глаголов

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

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

Но я думаю, использование должно добавить контроллер или параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...