2015-04-13 15 views
11

Ho un'API Web C# e sto cercando di far funzionare la documentazione della guida auto creata con IHttpActionResult. Ho rimosso l'esempio qui sotto, quindi è un po 'più facile da leggere.C# Documentazione della guida dell'API Web IHttpActionResult

Per l'oggetto, di seguito è riportato un semplice esempio. BusinessObject è solo un wrapper. CollectionBase è CollectionBase : ObservableCollection<T>, ILoadable where T : BusinessObject. È un vecchio codice base che viene generato automaticamente ma riutilizzandolo per questo.

public class Value : BusinessObject 
    { 
     public int Id { get; set; } 
    } 
    public class Values : CollectionBase<Value> 
    { 
     public override Value LoadObject(System.Data.IDataRecord record) 
     { 
      return new Value(); 
     } 
    } 

Per il lato API delle cose. I seguenti lavori.

public class Values : ApiController 
{ 
    public IEnumerable<Value> GetThis() 
    { 
     Values values = new Values(); 
     return values; 
    } 
} 

enter image description here

Il problema viene quando provo a fare

public IHttpActionResult GetThis() 
    { 
     Values values = new Values(); 
     return Ok(values); 
    } 

Non riconosce che dovrebbe utilizzare un tipo di ritorno diverso. La 'Descrizione risorsa' finisce con IHttpActionResult senza output di esempio. Ora posso aggiungere

config.SetActualResponseType(typeof(IEnumerable<Value>), "Values", "GetThis"); 

e mostrerà un esempio di output, ma il 'Resource Description' sarà ancora IHttpActionResult. Questo è il problema principale che sto avendo. Vorrei usare IHttpActionResult perché è molto facile da usare e può restituire i codici di errore se necessario con estrema facilità. Vorrei solo essere in grado di auto costruire la documentazione.

UPDATE: Su alcune ricerche ulteriori, ho fatto bene questo post. Resource Description on Web API Help page is showing "None."

Bazzialmente, si aggiunge l'attributo del tipo di risposta al metodo.

[ResponseType(typeof(IEnumerable<Value>))] 
public IHttpActionResult GetThis() 
{ 
    Values values = new Values(); 
    return Ok(values); 
} 

Anche se questo funziona tecnicamente e ho modificato il mio codice esistente per usarlo. Sarebbe comunque bello se ci fosse un modo per vederlo automaticamente in qualche modo. Non sono sicuro se sia possibile o meno.

+0

Probabilmente si dovrebbe rispondere alla tua domanda se hai scoperto la risposta (e sì, questa è la risposta corretta; P). – julealgon

+0

Ya, ci stavo pensando. Era come sperare che qualcuno venisse con un 'hey cambia semplicemente configurazione per vedere cosa restituisce l'OK (tipo)' e lo farebbe per ogni metodo senza dover includere l'attributo ogni volta. Lascerò senza risposta ancora per un po 'solo per vedere. –

risposta

21

Questo funziona per quello che sto facendo. È un po 'noioso da includere ogni volta ma mi consente di restituire i codici di errore se necessario e conservare la funzionalità della documentazione di aiuto.

[ResponseType(typeof(IEnumerable<Value>))] 
public IHttpActionResult GetThis() 
{ 
    Values values = new Values(); 
    return Ok(values); 
} 

Resource Description on Web API Help page is showing "None."

Problemi correlati