Utilizzo del nuovo controller Api in MVC4 e ho riscontrato un problema. Se ho i seguenti metodi:Controller Api che dichiara più di una istruzione Get
public IEnumberable<string> GetAll()
public IEnumberable<string> GetSpecific(int i)
Questo funzionerà. Tuttavia, se voglio recuperare alcuni dati differenti di tipo diverso, il valore predefinito è il metodo GetAll
, anche se il $.getJSON
è impostato il metodo GetAllIntegers
:
public IEnumberable<int> GetAllIntergers()
(convenzioni di denominazione cattivi)
È possibile che io sia in grado di farlo?
Posso avere un solo metodo GetAll
nel controller API Web?
Penso che sia più facile visualizzare ciò che sto cercando di ottenere. Ecco un frammento di codice per mostrare quello che mi piacerebbe essere in grado di fare, in un unico 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
}
Domanda veloce, posso instradare in questo modo e chiamare solo i miei metodi solo "Post" e li ho automaticamente accettare solo HttpPost se includo un ActionNameAttribute? – Alxandr
@Alxandr Devi ancora usare AcceptVerbsAttribute (o HttpPostAttribute, HttpGetAttribute, ecc.) – tpeczek
Sto riscontrando qualche problema con il routing - Posso definire più metodi "GET", ma se colpisco/api/{controller} il server dà un HTTP 500 "più azioni trovate" piuttosto che un 404. Qualche idea su come bloccarlo? Quello che mi piacerebbe è avere/api/{controller}/{id} percorso per "Get, Post, Put, Delete, ecc", quindi avere/api/{controller}/{id}/{azione} percorso per un'azione specifica, come/api/Clienti/5/Prodotti. Non funziona: tutto genera un errore "più azioni trovate". – ShadowChaser