Generare URL in base al routing in un controller di Web API

di , in ASP.NET MVC, ASP.NET Web API,

Tutte le volte che abbiamo la necessità di recuperare il link a una determinata action conviene sfruttare la funzionalità di generazione degli URL messa a disposizione dal routing. Il vantaggio, rispetto a scrivere manualmente delle stringhe, è che se le impostazioni del routing in futuro dovessero cambiare, tutti gli url generati si aggiorneranno automaticamente e rifletteranno il nuovo setup.

In ASP.NET MVC abbiamo a disposizione la classe UrlHelper, che possiamo facilmente invocare da un controller in questo modo:

var url = this.Url.Action(
  "MyAction", "MyController", new { id = 5});

Anche ASP.NET Web API possiede un oggetto UrlHelper, ma la sintassi è leggermente differente. Infatti, dall'interno di un ApiController, dovremo scrivere:

var url = this.Url.Link(
  "DefaultApi", new { controller = "myController", id = 5});

Come possiamo notare, abbiamo innanzi tutto dovuto specificare il nome della route di Web API, che, per default, è DefaultApi. Il secondo parametro è un anonymous type in cui invece abbiamo indicato i parametri della regola di routing:

config.Routes.MapHttpRoute(
  name: "DefaultApi",
  routeTemplate: "api/{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);

In particolare, essi sono solo il controller e l'id, perché la action invocata dipenderà dal verbo HTTP della chiamata (GET, POST, PUT, e via discorrendo).

Commenti

Visualizza/aggiungi commenti

Generare URL in base al routing in un controller di Web API (#1159) 1010 1
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi