Я создаю API, используя веб-API Asp.net.У меня есть контроллер BookController с двумя методами:
BookController
GetBook(int id)
GetBook(int userId)
Если я вызываю localhost/book/3, возникает неопределенность в том, какой метод вызывать. Как я могу различить два метода?
localhost/book/3
Забудьте о взломе, это здравый смысл. Для здравого смысла ваших пользователей и разработчиков просто измените маршруты и имена методов, чтобы четко устранить неоднозначность этих различных операций. Одним из решений может быть Map / user / 3 / books и books / 3 для GetBooksByUser и GetBooks соответственно. Делает код и URI более читабельными.
У меня было бы 2 контроллера: Книги и Пользователи. Для книг: api / books / 3 принесет книгу № 3, а для пользователей: api / users / 3 принесет пользователя № 3.
Вы ознакомились с основными учебными пособиями по ASP.NET Web API? Они великолепны, я следил за ними, и все очень просто:
http://www.asp.net/web-api/overview
Существует хакерский способ использования различных http глаголов
[HttpGet] public int GetUsers(int i) { return 0; } [HttpPost] public int GetBooks(int i) { return 1; }
Но я думаю, использование должно добавить контроллер или параметр.