Programmering

Hvordan bruke Swagger i ASP.Net Core

Du vil ofte lage dokumentasjon for API-en. For å opprette denne dokumentasjonen kan du dra nytte av Swagger - et verktøy som enkelt kan brukes til å gi en UI-representasjon av API-en. Når du har generert Swagger-dokumentasjon for API-en din, kan du se signaturen til API-metodene dine og til og med teste API-metodene dine også.

Swashbuckle er et open source-prosjekt for å generere Swagger-dokumenter. Denne artikkelen presenterer en diskusjon om hvordan vi kan dra nytte av Swashbuckle for å generere interaktiv dokumentasjon for vårt RESTful API.

Opprett et ASP.Net Core-prosjekt

Først og fremst, la oss lage et ASP.Net Core-prosjekt i Visual Studio. Forutsatt at Visual Studio 2017 eller Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt ASP.Net Core-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "ASP.Net Core Web Application" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet "Konfigurer ditt nye prosjekt" som vises neste, spesifiserer du navnet og stedet for det nye prosjektet.
  6. Klikk på Opprett.
  7. I vinduet "Create New ASP.Net Core Web Application" velger du .Net Core som kjøretid og ASP.Net Core 2.2 (eller nyere) fra rullegardinlisten øverst.
  8. Velg “API” som prosjektmal for å opprette et nytt ASP.Net Core Web API-prosjekt.
  9. Forsikre deg om at avmerkingsboksene "Aktiver Docker-støtte" og "Konfigurer for HTTPS" ikke er merket av da vi ikke bruker disse funksjonene her.
  10. Forsikre deg om at autentisering er angitt som “ingen godkjenning”, da vi heller ikke bruker autentisering.
  11. Klikk på Opprett.

Ved å følge disse trinnene opprettes et nytt ASP.Net Core-prosjekt i Visual Studio. Vi vil bruke dette prosjektet i de påfølgende delene av denne artikkelen for å undersøke hvordan vi kan generere Swagger-dokumentasjon for ValuesController.

Installer Swagger mellomvare i ASP.Net Core

Hvis du har opprettet et ASP.Net Core-prosjekt, er det neste du bør gjøre å legge til de nødvendige NuGet-pakkene i prosjektet ditt. For å gjøre dette, velg prosjektet i Solution Explorer-vinduet, høyreklikk og velg "Manage NuGet Packages ...." I NuGet Package Manager-vinduet, søk etter pakken Swashbuckle.AspNetCore og installer den. Alternativt kan du installere pakken via NuGet Package Manager-konsollen som vist nedenfor.

PM> Installasjonspakke Swashbuckle.AspNetCore

Swashbuckle.AspNetCore-pakken inneholder de nødvendige verktøyene for å generere API-dokumenter for ASP.Net Core.

Konfigurer Swagger mellomvare i ASP.Net Core

For å konfigurere Swagger, skriv følgende kode i ConfigureServices-metoden. Legg merke til hvordan AddSwaggerGen-utvidelsesmetoden brukes til å spesifisere metadataene for API-dokumentet.

services.AddSwaggerGen (c =>

            {

c.SwaggerDoc ("v1", ny info

                {

Versjon = "v1",

Tittel = "Swagger Demo",

Beskrivelse = "Swagger Demo for ValuesController",

TermsOfService = "Ingen",

Kontakt = ny kontakt () {Name = "Joydip Kanjilal",

E-post = "[email protected]",

Url = "www.google.com"}

                });

            });

Du bør også aktivere Swagger UI i konfigurasjonsmetoden som vist nedenfor.

app.UseSwagger ();

app.UseSwaggerUI (c =>

{

c.SwaggerEndpoint ("/ swagger / v1 / swagger.json", "v1");

});

Her er den fullstendige koden til oppstartsklassen som referanse.

ved hjelp av Microsoft.AspNetCore.Builder;

ved hjelp av Microsoft.AspNetCore.Hosting;

ved hjelp av Microsoft.AspNetCore.Mvc;

ved hjelp av Microsoft.Extensions.Configuration;

ved hjelp av Microsoft.Extensions.DependencyInjection;

ved hjelp av Swashbuckle.AspNetCore.Swagger;

navnerom SwaggerDemo

{

offentlig klasse Oppstart

    {

offentlig oppstart (konfigurasjon av IConfiguration)

        {

Konfigurasjon = konfigurasjon;

        }

offentlig IConfiguration Configuration {get; }

offentlig ugyldighet ConfigureServices (IServiceCollection-tjenester)

        {

services.AddMvc (). SetCompatibilityVersion

(CompatibilityVersion.Version_2_2);

services.AddSwaggerGen (c =>

            {

c.SwaggerDoc ("v1", ny info

                {

Versjon = "v1",

Tittel = "Swagger Demo",

Beskrivelse = "Swagger Demo for ValuesController",

TermsOfService = "Ingen",

Kontakt = ny kontakt () {Name = "Joydip Kanjilal",

E-post = "[email protected]",

URL = "www.google.com"

                }

                });

            });

        }

public void Configure (IApplicationBuilder app,

IHostingEnvironment env)

        {

if (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

app.UseMvc ();

app.UseSwagger ();

app.UseSwaggerUI (c =>

            {

c.SwaggerEndpoint ("/ swagger / v1 / swagger.json", "v1");

            });

        }

    }

}

Dette er alt du trenger å gjøre for å komme i gang med Swagger.

Bla gjennom Swagger UI i ASP.Net Core-appen

Nå er vi klare til å utføre applikasjonen og bla gjennom Swagger-endepunktet. Brukergrensesnittet til Swagger vil vises som i figur 1 nedenfor. Legg merke til hvordan Swagger bruker forskjellige farger for HTTP-verbene GET, PUT, POST og DELETE. Du kan utføre hvert av endepunktene vist i figur 1 direkte fra Swagger UI.

Lag XML-kommentarer i kontrollerens handlingsmetoder

Så langt så bra. I Swagger-dokumentet generert tidligere var det ingen XML-kommentarer. Hvis du vil vise XML-kommentarer i Swagger-dokumentet, skriver du bare kommentarene i kontrollerens handlingsmetoder.

La oss nå skrive kommentarer for hver av handlingsmetodene i ValuesController. Her er den oppdaterte versjonen av ValuesController med XML-kommentarer for hver av handlingsmetodene.

  [Rute ("api / [controller]")]

[ApiController]

offentlig klasse ValuesController: ControllerBase

    {

        ///

/// Få handlingsmetode uten noe argument

        ///

        ///

[HttpGet]

offentlig ActionResult Få()

        {

returner ny streng [] {"value1", "value2"};

        }

        ///

/// Få handlingsmetode som godtar et heltall som et argument

        ///

        ///

        ///

[HttpGet ("{id}")]

offentlig ActionResult Get (int id)

        {

returner "verdi";

        }

        ///

/// Legg ut handlingsmetode for å legge til data

        ///

        ///

[HttpPost]

public void Post ([FromBody] strengverdi)

        {

        }

        ///

/// Sett handlingsmetode for å endre data

        ///

        ///

        ///

[HttpPut ("{id}")]

offentlig ugyldig Put (int id, [FromBody] strengverdi)

        {

        }

        ///

/// Slett handlingsmetode

        ///

        ///

[HttpDelete ("{id}")]

public void Delete (int id)

        {

        }

    }

Slå på XML-kommentarer i Swagger

Merk at Swagger ikke viser XML-kommentarer som standard. Du må slå på denne funksjonen. For å gjøre dette høyreklikker du på Prosjekt, velger Egenskaper og naviger deretter til kategorien Bygg. I kategorien Bygg sjekker du "XML-dokumentasjonsfil" for å spesifisere stedet der XML-dokumentasjonsfilen skal opprettes.

Du bør også spesifisere at XML-kommentarene skal inkluderes når du genererer Swagger-dokumentet ved å skrive følgende kode i ConfigureServices-metoden.

c.IncludeXmlComments (@ "D: \ Projects \ SwaggerDemo \ SwaggerDemo \ SwaggerDemo.xml");

Og det er alt du trenger å gjøre for å slå på XML-kommentarer i Swagger.

Sett lanserings-URL for appen til Swagger UI

Du kan endre programmets lanserings-URL for å spesifisere at Swagger UI skal lastes inn når applikasjonen startes. For å gjøre dette, høyreklikk på Project og velg Properties. Naviger deretter til Debug-fanen. Til slutt, spesifiser Launch Browser-verdien som swagger som vist i figur 2.

Når du kjører applikasjonen igjen og navigerer til Swagger URL, bør du se Swagger UI som vist i figur 3 nedenfor. Legg merke til XML-kommentarene i hver av API-metodene denne gangen.

Swashbuckle er et flott verktøy for å generere Swagger-dokumenter for API-en din. Viktigst, Swashbuckle er enkel å konfigurere og bruke. Det er mye mer du kan gjøre med Swagger enn vi har sett her. Du kan tilpasse Swagger-brukergrensesnittet ved hjelp av Cascading Style Sheets, vise enumverdier som strengverdier, og lage forskjellige Swagger-dokumenter for forskjellige versjoner av API-en din, bare for å nevne noen.

$config[zx-auto] not found$config[zx-overlay] not found