Używanie nowego kontrolera Api w MVC4 i znalazłem problem. Jeśli mam następujące metody:Kontroler Api deklarujący więcej niż jedną instrukcję Pobierz
public IEnumberable<string> GetAll()
public IEnumberable<string> GetSpecific(int i)
to będzie działać. Jednakże, jeśli chcę odzyskać kilka różnych danych innego typu, to domyślnie metody GetAll
, choć $.getJSON
ustawiony jest na metodzie GetAllIntegers
:
public IEnumberable<int> GetAllIntergers()
(złe nazewnictwa)
Czy mogę to zrobić?
Czy mogę mieć tylko jedną metodę GetAll
w kontrolerze Web API?
Myślę, że łatwiej jest wyobrazić sobie, co próbuję osiągnąć. Oto fragment kodu, aby pokazać, co chciałabym być w stanie wykonać w jednym ApiController
:
public IEnumerable<string> GetClients()
{ // Get data
}
public IEnumerable<string> GetClient(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMember(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMembers()
{ // Get data
}
Szybkie pytanie, czy mogę tak prowadzić i nadal nazywam moje metody tylko "Opublikuj" i czy automatycznie akceptują one tylko HttpPost, jeśli dołączę AkcjaNazwisko? – Alxandr
@Alxandr Nadal będziesz musiał używać AcceptVerbsAttribute (lub HttpPostAttribute, HttpGetAttribute itp.) – tpeczek
Mam pewne problemy z routingiem - mogę zdefiniować wiele metod "GET", ale jeśli uderzę/api/{controller} serwer daje HTTP 500 "wiele akcji znalezionych" zamiast 404. Dowolny pomysł, jak to zablokować? Chciałbym mieć/api/{controller}/{id} trasę do "Get, Post, Put, Delete, etc", a następnie mam/api/{controller}/{id}/{action} trasę do konkretne działanie, takie jak/api/Customers/5/Products. Nie działa - wszystko daje błąd "znaleziono wiele działań". – ShadowChaser