1 messaggio dal 28 aprile 2011
Ciao a tutti,
sto costruendo una web API in .NET e ho qualche dubbio.
Premessa: le API saranno parte per uso interno e parte esposte all'esterno. Mi sono andato a creare una help page utilizzando Microsoft ASP.NET Web API 2.2 Help page.
Nel caso in cui io abbia definito un controller per ricevere le informazioni sugli attori di un film dando un nome, per me programmatore, significativo supponiamo

MoviesActorsController

Tuttavia all'utilizzatore finale non gli chiederei mai di visitare

http://miosito.com/api/moviesactors?movieid={mID}&actorid={aID}

quindi ho definito la mia bella Route nel WebApiConfig.cs in modo che possa usare un URL meglio formattata, quale:

http://miosito.com/api/movies/{mID}/actors/{aID}

Ora nell'help page tuttavia compaiono entrambe le possibilità. C'è un modo per eliminare la prima?

Grazie

Diego
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Diego,
la help page giustamente elenca entrambi le route che conducono all'action di quel Controller.
Forse potresti risolvere il problema eliminando la route di default e usando l'attribute routing in maniera puntuale, su ogni controller.
http://www.aspitalia.com/script/1133/Routing-Basato-Attributi-ASP.NET-MVC-ASP.NET-Web-API.aspx

In questo modo esisterà una sola route per arrivare all'action.

In alternativa, sì, potresti eliminare la voce indesiderata agendo direttamente sui file dell'area HelpPage che hai nel progetto.
Per esempio, nell'HelpController, all'action Index, puoi filtrare le ApiDescriptions.
var descriptionsFiltrate = Configuration.Services.GetApiExplorer().ApiDescriptions.Where(d => ....);

Ogni ApiDescription ha una proprietà Route.RouteTemplate che puoi usare per distinguere quelle che arrivano dalla route di default o dall'altra che hai creato.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.