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

di Marco De Sanctis, 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

| 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