2013-02-02 10 views
15

Utilizzo la WebAPI Versioning package alla versione API dall'intestazione X-Api utilizzando "VersionHeaderVersionedControllerSelector". Sto anche utilizzando il Microsoft.AspNet.WebApi.HelpPage per generare automaticamente la documentazione per le API. Affinché regolatore versionign a lavorare, hanno bisogno di essere namespace con il VersionXYZ come suffisso nello spazio dei nomi in modo che il "VersionHeaderVersionedControllerSelector" è in grado di indirizzare la richiesta per la versione appropriata del controller in questo modo:Generazione di pagine di documentazione di guida specifiche della versione per l'applicazione API Web ASP.NET

namespace WEBAPI.Api.Controllers.Version1 
{ public class ProductsController : ApiController {} } 

namespace WEBAPI.Api.Controllers.Version2 
{ public class ProductsController : ApiController {} } 

Questo funziona come previsto, ma quando guardo alle pagine del manuale generato il ApiDescription è compreso il suffisso "VersionXYZ" dallo spazio dei nomi nel ID (GETapi/Version1.Products) e relativePath (API/Version1.Products) proprietà. Idealmente, quello che mi piacerebbe fare è avere una pagina di aiuto di primo livello che solo i numeri di versione API e il drilling in mostrino l'API nel modo normale, vale a dire The ApiDescription.ID = GETapi/Products e ApiDescription.RelativePath = api/prodotti

c'è un modo per raggiungere questo obiettivo utilizzando l'out of the Box API o sto andando avere bisogno di rollout mia implementazione di ApiExplorer

+0

Hai mai trovato una soluzione a questo problema? – TheQ

+0

asp.net web api 2.0? –

risposta

0

Purtroppo ApiExplorer non supporta i nomi di controller duplicati. Quindi, implementando il controllo delle versioni del controller in questo modo, il tuo (o il codice del pacchetto) non funziona bene con il sistema.

Considerare un'altra alternativa in cui si modifica effettivamente il nome del controller (e sì, si dovrà implementare la propria soluzione, ma onestamente non è così complesso). Ad esempio, rendere la versione parte del nome del controller stesso (piuttosto che il suo spazio dei nomi).

ad es. Ver1_ProcuctsController

Ora questi inizieranno a essere visualizzati nella tua pagina di aiuto e, poiché la pagina di aiuto è solo un pacchetto di contenuti, puoi modificare la logica in modo che i nomi che iniziano con verxxx_ vengano modificati.

1

Partenza questa risposta Get Help page works with Api Versioning

Assicurati di avere il diritto configurare il controllo delle versioni, ed è necessario per ottenere un file XML di documentazione dal progetto XXXX.Api.v1 progetto e posizionarlo nella cartella bin del XXXX Progetto .Api.

Problemi correlati