Introduzione alle Web API di ASP.NET

Introduzione alle Web API di ASP.NET

L’obiettivo di questo blog post è quello di introdurre l’argomento delle Web API di Microsoft. Partiremo dalla creazione del progetto per poi arrivare a testare 3 chiamate HTTP.

 

Creazione del progetto e codice sorgente

Creiamo un nuovo progetto Web di tipo ASP.NET MVC4 e usiamo il template Web API.

webapi1 webapi2

 

 

Visual Studio creerà per noi la struttura di un website MVC classico con l’aggiunta del controller di esempio delle nostre Web API, ValuesController.cs.

webapi3

 

Cambiate il codice con il seguente

  public class ValuesController : ApiController
  {
    // identifica la chiamata di tipo GET e il nome della nostra {action}
    [HttpGet, ActionName("actionTest1")]
    public String action1()
    {
      return "Hello API!!!";
    }

    // identifica la chiamata di tipo GET e il nome della nostra {action}
    // devono essere passati 2 valori interi: numero1, numero2
    [HttpGet, ActionName("actionTest2")]
    public String action1(Int32 numero1, Int32 numero2)
    {
      return "Chiamata in GET: " + numero1 + " e " + numero2;
    }

    // identifica la chiamata di tipo POST e il nome della nostra {action}
    // il valore è dato dalla classe "Valori" che contiene al proprio interno
    // numero1 e numero2 entrambi interi
    [HttpPost, ActionName("actionTest3")]
    public String action1(Valori valori)
    {
      return "Chiamata in POST JSON: " + valori.numero1 + " e " + valori.numero2;
    }
  }

  public class Valori
  {
    public Int32 numero1 { get; set; }
    public Int32 numero2 { get; set; }
  }

Proviamo adesso ad avviare il website e ci verrà mostrata la classica pagina MVC. Come facciamo quindi ad indirizzare le chiamate al nostro controller?

La classe WebApiConfig (App_Start/WebApiConfig.cs) ha il compito di definire uno schema per individuare il metodo HTTP da richiamare “api/{controller}/{id}”. Quello che andremo a modificare è {id} in {action} che ci servirà ad indirizzare la richiesta verso la nostra azione.

  public static class WebApiConfig
  {
    public static void Register(HttpConfiguration config)
    {
      config.Routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{action}",
          defaults: new { id = RouteParameter.Optional }
      );

      config.EnableSystemDiagnosticsTracing();
    }
  }

 

Testiamo adesso le 3 tipologie di chiamate.

 

Chiamata 1

La prima è una chiamata GET ha come indirizzo http://localhost:xxxxx/api/values/actiontest1 ed è una sorta di Hello World, non ha parametri in ingresso e come risposta abbiamo la stringa Hello API!!!

Analizzando l’indirizzo vediamo che:

  • values: è il nome del controller ovvero il nostro ValuesController.cs
  • actiontest1: è il nome dell’azione associata al metodo action1

 

Chiamata 2

La seconda chiamata è sempre in GET ma questa volta accetta 2 parametri: numero1, numero2. L’indirizzo per testarla è http://localhost:xxxxx/api/values/actiontest2?numero1=4&numero2=9

La risposta sarà una stringa di questo tipo:Chiamata in GET: 4 e 9

 

Chiamata 3

La terza chiamata è in POST e accetta come valore una classe contente numero1 e numero2.

Per testarla potete utilizzare Fiddler, un programma gratuito per il debugging delle richieste web. I parametri da inserire sono:

  • Url: http://localhost:xxxxx/api/values/actiontest3 (in POST)
  • Request Headers: Content-Type: application/json
  • Request Body: { “numero1”: 9, “numero2”: 4 }

La risposta in questo caso sarà: Chiamata in POST JSON: 9 e 4

Sotto potete trovare 2 screenshot di Fiddler con i parametri per testare la richiesta e la risposta data dalle Web API.

webapi4 webapi5

 

E’ possibile avere anche oggetti complessi come valori di ritorno, provate ad esempio nella terza chiamata ad inserire return valori; per vedere come viene formattata la risposta.

 

Come potete vedere, le Web API sono uno strumento semplice e funzionante per creare API da usare con un website o app per smartphone. Sono inoltre utilizzabili su Azure tramite WebSite o CloudService.

Se volete utilizzare una solution più pulita potete creare su Visual Studio un website semplice ed integrare successivamente le funzioni delle Web API.

Con alcuni successivi articoli ci sarà l’occasione di trattare altri temi come le autorizzazioni e la gestione degli errori.

 

Per eventuali informazioni o chiarimenti lasciate un commento o contattatemi su Twitter @ballerinifb

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *