{"id":1907,"date":"2019-12-23T08:16:33","date_gmt":"2019-12-23T08:16:33","guid":{"rendered":"https:\/\/cloudsurfers.it\/dev?p=1907"},"modified":"2020-06-23T20:37:29","modified_gmt":"2020-06-23T20:37:29","slug":"creazione-di-una-web-api-asp-net-core-con-implementazione-dello-strumento-swagger","status":"publish","type":"post","link":"https:\/\/cloudsurfers.it\/index.php\/creazione-di-una-web-api-asp-net-core-con-implementazione-dello-strumento-swagger\/","title":{"rendered":"Creazione di una Web API ASP.NET Core con implementazione dello strumento Swagger"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1909 size-large\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Header_Evidenza-1024x505.png\" alt=\"\" width=\"800\" height=\"395\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Header_Evidenza-1024x505.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Header_Evidenza-300x148.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Header_Evidenza-768x379.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Header_Evidenza-600x296.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Header_Evidenza.png 1200w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>In questo articolo vedremo come creare una semplice <strong>API Web<\/strong> utilizzando il framework <strong>ASP.NET Core<\/strong> ed implementando, successivamente, lo strumento <strong>Swagger<\/strong>.<\/p>\n<h3>Che cos&#8217;\u00e8 Swagger?<\/h3>\n<p><a href=\"https:\/\/swagger.io\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Swagger<\/strong><\/a> \u00e8 un <strong>framework open source<\/strong> con al suo interno un vasto ecosistema di strumenti per aiutare gli sviluppatori a <em>progettare<\/em>, <em>costruire<\/em>, <em>utilizzare<\/em> e <em>documentare<\/em> <strong>servizi web <a href=\"https:\/\/it.wikipedia.org\/wiki\/Representational_State_Transfer\" target=\"_blank\" rel=\"noopener noreferrer\">RESTful<\/a><\/strong>.<br \/>\nIl set di strumenti che Swagger mette a disposizione \u00e8 comprensivo della gestione automatizzata di: documentazione, generazione del codice di implementazione e generazione di casi d&#8217;uso di esempio per le API.<\/p>\n<p>Per approfondire lo strumento, potete trovare ulteriori informazioni sul <a href=\"https:\/\/swagger.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">sito ufficiale<\/a> del progetto.<\/p>\n<h3>Prerequisiti<\/h3>\n<p>Per seguire questa guida avremo bisogno dei seguenti strumenti installati sul sistema che andremo ad utilizzare:<\/p>\n<ul>\n<li><a href=\"https:\/\/visualstudio.microsoft.com\/it\/vs\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Visual Studio 2019<\/strong><\/a> con installati gli <strong>strumenti di sviluppo Web ASP.NET<\/strong>;<\/li>\n<li><a href=\"https:\/\/dotnet.microsoft.com\/download\/dotnet-core\/3.0\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>.NET Core 3.0 SDK<\/strong><\/a> o successivi.<\/li>\n<\/ul>\n<h3>Creazione del progetto<\/h3>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Diagramma.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1911 size-full\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Diagramma.png\" alt=\"\" width=\"440\" height=\"316\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Diagramma.png 440w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Diagramma-300x215.png 300w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>Apriamo <strong>Visual Studio<\/strong> ed iniziamo con le creazione di un nuovo progetto, quindi: <strong>File<\/strong>, <strong>Nuovo<\/strong>, <strong>Progetto&#8230;<\/strong>. Cerchiamo la tipologia di progetto &#8220;<em>Applicazione Web ASP.NET Core<\/em>&#8221; e selezioniamo il relativo tipo di progetto:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Configura_Nuovo_Progetto.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1916 size-large\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375-1024x539.png\" alt=\"\" width=\"800\" height=\"421\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375-1024x539.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375-300x158.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375-768x404.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375-600x316.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Configura_Nuovo_Progetto-e1576061882375.png 1437w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Selezionare successivamente <strong>.NET Core<\/strong> ed <strong>API<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1918\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164.png\" alt=\"\" width=\"800\" height=\"554\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164.png 1013w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164-300x208.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164-768x531.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Nuova_Applicazione_AspNetCore-e1576062149164-600x415.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Al termine della creazione del progetto ci troveremo davanti ad una struttura file come la seguente:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Struttura_Progetto_Nuovo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1920\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Struttura_Progetto_Nuovo.png\" alt=\"\" width=\"346\" height=\"197\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Struttura_Progetto_Nuovo.png 346w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Struttura_Progetto_Nuovo-300x171.png 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p>Eseguendo il progetto otteniamo un file <strong>JSON<\/strong> contenente una lista di informazioni meteo di esempio:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Risultato_Primo_Avvio.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1949\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Risultato_Primo_Avvio-1024x101.png\" alt=\"\" width=\"800\" height=\"79\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Risultato_Primo_Avvio-1024x101.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Risultato_Primo_Avvio-300x29.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Risultato_Primo_Avvio-768x75.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Risultato_Primo_Avvio-600x59.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Risultato_Primo_Avvio.png 1507w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;\r\n  {&quot;date&quot;:&quot;2019-11-27T14:43:20.8538682+01:00&quot;,&quot;temperatureC&quot;:52,&quot;temperatureF&quot;:125,&quot;summary&quot;:&quot;Mild&quot;},\r\n  {&quot;date&quot;:&quot;2019-11-28T14:43:20.857579+01:00&quot;,&quot;temperatureC&quot;:41,&quot;temperatureF&quot;:105,&quot;summary&quot;:&quot;Chilly&quot;},\r\n  {&quot;date&quot;:&quot;2019-11-29T14:43:20.8575837+01:00&quot;,&quot;temperatureC&quot;:5,&quot;temperatureF&quot;:40,&quot;summary&quot;:&quot;Chilly&quot;},\r\n  {&quot;date&quot;:&quot;2019-11-30T14:43:20.8575842+01:00&quot;,&quot;temperatureC&quot;:41,&quot;temperatureF&quot;:105,&quot;summary&quot;:&quot;Balmy&quot;},\r\n  {&quot;date&quot;:&quot;2019-12-01T14:43:20.8575846+01:00&quot;,&quot;temperatureC&quot;:3,&quot;temperatureF&quot;:37,&quot;summary&quot;:&quot;Mild&quot;}\r\n]\r\n<\/pre>\n<p>Aggiungiamo ora una nuova classe modello che chiamiamo <strong>BookItem<\/strong>, all&#8217;interno di una nuova cartella <strong>Models<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Classe_BookItem.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1950\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Classe_BookItem-e1576159404816.png\" alt=\"\" width=\"800\" height=\"348\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Classe_BookItem-e1576159404816.png 839w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Classe_BookItem-e1576159404816-300x131.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Classe_BookItem-e1576159404816-768x334.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Classe_BookItem-e1576159404816-600x261.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic class BookItem\r\n{\r\n    public int Id { get; set; }\r\n    public string ISBN { get; set; }\r\n    public string Title { get; set; }\r\n    public string Author { get; set; }\r\n    public string Year { get; set; }\r\n    public string Story { get; set; }\r\n}\r\n<\/pre>\n<p>Aggiungiamo successivamente un contesto database installando innanzitutto i componenti <strong>Microsoft.EntityFrameworkCore.SqlServer<\/strong> e <strong>Microsoft.EntityFrameworkCore.InMemory<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_SqlServer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1934\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_SqlServer-1024x238.png\" alt=\"\" width=\"800\" height=\"186\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_SqlServer-1024x238.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_SqlServer-300x70.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_SqlServer-768x179.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_SqlServer-600x140.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_SqlServer.png 1488w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_InMemory.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1935\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_InMemory-1024x218.png\" alt=\"\" width=\"800\" height=\"170\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_InMemory-1024x218.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_InMemory-300x64.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_InMemory-768x164.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_InMemory-600x128.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_InMemory.png 1486w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Aggiungiamo poi una classe <strong>ExampleContext<\/strong>, sempre all&#8217;interno della cartella <em>Models<\/em> creata in precedenza:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/DBContext.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1936\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/DBContext-e1576159476405.png\" alt=\"\" width=\"800\" height=\"324\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/DBContext-e1576159476405.png 1017w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/DBContext-e1576159476405-300x122.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/DBContext-e1576159476405-768x311.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/DBContext-e1576159476405-600x243.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic class ExampleContext : DbContext\r\n{\r\n    public ExampleContext(DbContextOptions&amp;lt;ExampleContext&amp;gt; options) : base(optons)\r\n    {\r\n    }\r\n\r\n    public DbSet&amp;lt;BookItem&amp;gt; TodoItems { get; set; }\r\n}\r\n<\/pre>\n<p>Ora \u00e8 arrivato il momento di <strong>registrare il contesto database<\/strong> appena creato:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Registrazione_DbContext.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1937\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Registrazione_DbContext-e1576159525996.png\" alt=\"\" width=\"800\" height=\"612\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_DbContext-e1576159525996.png 832w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_DbContext-e1576159525996-300x229.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_DbContext-e1576159525996-768x587.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_DbContext-e1576159525996-600x459.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Ed aggiungere successivamente un elemento di <em>scaffolding<\/em> per il modello <strong>BookItem<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1938\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_1.png\" alt=\"\" width=\"800\" height=\"466\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_1.png 912w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_1-300x175.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_1-768x447.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_1-600x349.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1939\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_2-e1576159641457.png\" alt=\"\" width=\"800\" height=\"552\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_2-e1576159641457.png 936w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_2-e1576159641457-300x207.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_2-e1576159641457-768x530.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_2-e1576159641457-600x414.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1940 size-full\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_3-e1576159685511.png\" alt=\"\" width=\"583\" height=\"205\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_3-e1576159685511.png 583w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_3-e1576159685511-300x105.png 300w\" sizes=\"auto, (max-width: 583px) 100vw, 583px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1941 size-full\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Aggiunta_Elemento_Scaffolding_4.png\" alt=\"\" width=\"788\" height=\"228\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_4.png 788w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_4-300x87.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_4-768x222.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Aggiunta_Elemento_Scaffolding_4-600x174.png 600w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><\/a><\/p>\n<p><span style=\"color: #ff0000;\"><em>Nota: ho sostituito <strong>&#8220;GetBookItem&#8221;<\/strong> con <strong>nameof(GetBookItem)<\/strong>, per avere la chiamata con la stesso nome della classe in caso di modifiche future.<\/em><\/span><\/p>\n<p>A questo punto siamo pronti per eseguire l&#8217;API Web e testare la chiamata appena creata <strong>api\/BookItems<\/strong> che restituir\u00e0 un elenco di elementi <strong>BookItem<\/strong> presenti nella base dati. Nel nostro caso, non avendo inserito alcun elemento, il risultato ottenuto sar\u00e0 un vettore vuoto:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Vettore_vuoto.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1942\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Vettore_vuoto.png\" alt=\"\" width=\"461\" height=\"145\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Vettore_vuoto.png 461w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Vettore_vuoto-300x94.png 300w\" sizes=\"auto, (max-width: 461px) 100vw, 461px\" \/><\/a><\/p>\n<h3>Aggiunta di Swagger<\/h3>\n<p>Terminato il progetto API Web, aggiungiamo ora lo strumento <strong>Swagger<\/strong> e per farlo, utilizziamo il componente <strong>Swashbuckle<\/strong>.<\/p>\n<p>Installiamo quindi dal gestore pacchetti, il componente <strong>Swashbuckle.AspNetCore<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_Swashbuckle.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1944\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/NPM_Swashbuckle-1024x244.png\" alt=\"\" width=\"800\" height=\"191\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_Swashbuckle-1024x244.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_Swashbuckle-300x71.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_Swashbuckle-768x183.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_Swashbuckle-600x143.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/NPM_Swashbuckle.png 1504w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Aggiungiamo e registriamo il servizio all&#8217;interno del file classe <strong>Startup.cs<\/strong>:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Registrazione_Swagger.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1945\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Registrazione_Swagger.png\" alt=\"\" width=\"800\" height=\"716\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_Swagger.png 888w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_Swagger-300x269.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_Swagger-768x688.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Registrazione_Swagger-600x537.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>All&#8217;interno del metodo <strong>ConfigureServices<\/strong>:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nservices.AddSwaggerGen(c =&gt;\r\n{\r\n    c.SwaggerDoc(&quot;v1&quot;, new OpenApiInfo { Title = &quot;My API&quot;, Version = &quot;v1&quot; });\r\n});\r\n<\/pre>\n<p>E all&#8217;interno del metodo <strong>Configure<\/strong>:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\napp.UseSwagger();\r\n\r\napp.UseSwaggerUI(c =&gt;\r\n{\r\n    c.SwaggerEndpoint(&quot;\/swagger\/v1\/swagger.json&quot;, &quot;My API V1&quot;);\r\n});\r\n<\/pre>\n<p>Eseguendo ora il progetto, all&#8217;indirizzo <strong>swagger\/index.html<\/strong>, verr\u00e0 caricato lo strumento appena configurato:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Home_Swagger.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1946\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Home_Swagger-1024x505.png\" alt=\"\" width=\"800\" height=\"395\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Home_Swagger-1024x505.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Home_Swagger-300x148.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Home_Swagger-768x379.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Home_Swagger-600x296.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Home_Swagger.png 1503w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Come potete vedere, con questo strumento \u00e8 possibile avere una panoramica documentale delle API Web ed \u00e8 anche possibile effettuare operazioni (<em>GET, POST, PUT, ecc&#8230;<\/em>) direttamente da interfaccia grafica.<\/p>\n<p>Ecco un esempio:<\/p>\n<p><a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Test_Swagger.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1947\" src=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/Test_Swagger-1024x480.png\" alt=\"\" width=\"800\" height=\"375\" srcset=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Test_Swagger-1024x480.png 1024w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Test_Swagger-300x141.png 300w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Test_Swagger-768x360.png 768w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Test_Swagger-600x281.png 600w, https:\/\/cloudsurfers.it\/wp-content\/uploads\/2019\/12\/Test_Swagger.png 1482w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Potete scaricare il progetto di esempio utilizzato in questo tutorial a <a href=\"https:\/\/cloudsurfers.it\/wp-content\/uploads\/\/2019\/12\/ExampleApiAspNetCoreSwagger.zip\">questo indirizzo<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo vedremo come creare una semplice API Web utilizzando il framework ASP.NET Core ed implementando, successivamente, lo strumento Swagger.<\/p>\n","protected":false},"author":3,"featured_media":1909,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wds_primary_category":0,"footnotes":""},"categories":[84,36],"tags":[85,86,87,88,89,46],"class_list":["post-1907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-guide","tag-api","tag-asp-net","tag-asp-net-core","tag-swagger","tag-swashbuckle","tag-web"],"_links":{"self":[{"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/posts\/1907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/comments?post=1907"}],"version-history":[{"count":0,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/posts\/1907\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/media\/1909"}],"wp:attachment":[{"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/media?parent=1907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/categories?post=1907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudsurfers.it\/index.php\/wp-json\/wp\/v2\/tags?post=1907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}