Ohjelmointi

Tietojen palauttaminen ASP.NET Core Web -sovellusliittymästä

Meillä on kolme tapaa palauttaa tiedot ja HTTP-tilakoodit toimintatavasta ASP.NET Core -sovelluksessa. Voit palauttaa tietyn tyypin, palauttaa tyypin IActionResult tai palauttaa ActionResult-tyypin ilmentymän.

Vaikka tietyn tyypin palauttaminen on yksinkertaisin tapa, IActionResult antaa sinun palauttaa sekä tiedot että HTTP-koodit, ja ActionResult antaa sinun palauttaa tyypin, joka laajentaa IActionResultia. ActionResultia voidaan käyttää HTTP-tilakoodin, tietojen tai molempien lähettämiseen toimintomenetelmästä.

Tässä artikkelissa käsitellään sitä, kuinka voimme palauttaa tietoja ASP.NET Core Web API -sovelluksessa kutakin näistä tyyppeistä, ja asiaankuuluvat koodiesimerkit C #: ssä.

Jotta voit työskennellä tässä artikkelissa kuvattujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.Net Core -sovellusliittymäprojekti

Ensinnäkin, luodaan ASP.NET Core -projekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core -projekti Visual Studioon noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.Net Core Web Application” näytetystä mallipohjaluettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Napsauta Luo.
  7. Valitse seuraavassa näkyvässä Luo uusi ASP.Net Core Web -sovellus -ikkunassa .NET Core ajonaikaisena ja ASP.NET Core 2.2 (tai uudempi) yläreunan avattavasta luettelosta. Käytän täällä ASP.NET Core 3.0: ta.
  8. Luo uusi ASP.NET Core API -sovellus valitsemalla projektimalliksi “API”.
  9. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  10. Varmista, että todennukseksi on määritetty Ei todentamista, koska emme myöskään käytä todennusta.
  11. Napsauta Luo.

Tämä luo uuden ASP.NET Core API -projektin Visual Studioon. Valitse nyt Ohjainten ratkaisukansio Solution Explorer -ikkunassa ja napsauta "Lisää -> Ohjain ..." luodaksesi uuden ohjaimen nimeltä DefaultController. Käytämme tätä projektia tutkiaksemme toimintatapojen tietojen palauttamista tämän artikkelin seuraavissa osissa.

Jos haluat helpon tavan testata alla käytettyjä toimintatapoja, suosittelen hyödyntämään Postmania. Voit ladata kopion postimiehestä täältä.

Luo ohjain- ja malliluokkia ASP.NET Core -sovelluksessa

Luo uusi ratkaisukansio ja nimeä se Mallit. Täällä voit sijoittaa mallikurssit. Seuraava koodiluettelo kuvaa, kuinka voit luoda yksinkertaisen malliluokan nimeltä Tekijä.

public class Kirjoittaja

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

    }

Toistaiseksi niin hyvä. Korvaa nyt DefaultController-luokan luotu koodi alla olevalla koodiluettelolla.

käyttämällä Microsoft.AspNetCore.Mvc;

käyttämällä System.Collections.Generic;

nimitila CoreWebAPI.Controllers

{

[Reitti ("api / [ohjain]")]

[ApiController]

public class DefaultController: ControllerBase

    {

yksityinen vain luku -luettelon kirjoittajat = new List ();

public DefaultController ()

        {

kirjoittajat.Lisää (uusi kirjoittaja ()

            {

Id = 1,

Etunimi = "Joydip",

Sukunimi = "Kanjilal"

            });

kirjoittajat. lisää (uusi kirjoittaja ()

            {

Id = 2,

Etunimi = "Steve",

Sukunimi = "Smith"

            });

        }

[HttpGet]

public IEnumerable Get ()

        {

paluu kirjoittajat;

        }

[HttpGet ("{id}", nimi = "Hae")]

julkinen kirjailija Get (int id)

        {

palauta tekijät.Etsi (x => x.Id == id);

        }

    }

}

Palauttaa tietyn tyypin toimintatavasta ASP.NET Core -sovelluksessa

Yksinkertaisin tapa palauttaa tietoja toimintatavasta on palauttaa tietty tyyppi. Yllä olevassa koodiluettelossa Hae toiminto -menetelmä palauttaa luettelon Kirjoittaja-esiintymistä. Nämä esiintymät luodaan ja alustetaan DefaultController-luokan konstruktorissa. Alla on toimintamenetelmä uudelleen viitteellesi. Huomaa, että se palauttaa IEnumerable.

[HttpGet]

public IEnumerable Get ()

{

paluu kirjoittajat;

}

ASP.NET Core 3.0: sta alkaen sinulla on myös mahdollisuus palauttaa IAsyncEnumerable toimintatavasta. Vaikka IEnumerable suorittaa synkronisen kokoelman iteroinnin, IAsyncEnumerable suorittaa asynkronisen iteraation. Siten IAsyncEnumerable on tehokkaampi, koska estäviä puheluja ei ole. (Keskustelen IAsyncEnumerableista myöhemmin täällä tulevassa viestissä.)

Näin voit kirjoittaa edellisen toimintamenetelmän uudelleen käyttämällä IAsyncEnumerable-ohjelmaa.

[HttpGet]

public async IAsyncEnumerable Get ()

{

var kirjoittajat = odota GetAuthors ();

odota foreachia (var kirjailija tekijöissä)

   {

tuottoprosentin tekijä;

   }

}

Palauta tyypin IActionResult esiintymä ASP.NET Core -toimintamenetelmästä

Voit hyödyntää IActionResult-käyttöliittymää, kun haluat palauttaa sekä tiedot että HTTP-koodit toimintatavastasi. Seuraava koodinpätkä kuvaa, miten tämä voidaan saavuttaa.

[HttpGet]

julkinen IActionResult Get ()

{

if (tekijät == null)

return NotFound ("Ei tietueita");

palaa Ok (tekijät);

}

IActionResult-käyttöliittymän toteuttavat OkResult-, NotFoundResult-, CreatedResult-, NoContentResult-, BadRequestResult-, UnauthorizedResult- ja UnsupportedMediaTypeResult-luokat.

Edellisessä koodinpätkässä metodit NotFound () ja Ok () palauttavat tyypin IActionResult esiintymiä.

Palauta ActionResult-tyyppinen ilmentymä toimintomenetelmästä ASP.NET Core -sovelluksessa

ActionResult esiteltiin ASP.NET Core 2.1: ssä. ActionResult on tyyppi, joka toteuttaa IActionResult-käyttöliittymän. Voit hyödyntää ActionResult-palautustyyppiä palauttaaksesi tyypin, joka laajentaa ActionResultia tai muuta erityistyyppiä (kuten esimerkiksi esimerkissämme Kirjoittaja).

Seuraava koodinpätkä kuvaa, kuinka voimme palauttaa ActionResult-toimintomenetelmän.

[HttpGet]

julkinen toimintatulos Saada()

{

if (tekijät == null)

return NotFound ("Ei tietueita");

paluu kirjoittajat;

}

Kuten edellisestä koodinpätkästä näet, sinun ei enää tarvitse käärittää palautettavaa objektia Ok () -menetelmään - voit palauttaa sen sellaisenaan.

Tehdään nyt tämä asynkroninen. Harkitse seuraavaa asynkronointimenetelmää, joka palauttaa kirjoittajaluettelon.

yksityinen asynkronointitehtävä GetAuthors ()

{

odota Task.Delay (100) .ConfigureAwait (false);

paluu kirjoittajat;

}

Asynkronisessa menetelmässä tulisi olla vähintään yksi odottaa-lause. Jos sillä ei ole odotuslausekkeita, kääntäjä luo varoituksen, jonka mukaan menetelmä toimii synkronisesti. Tämän kääntäjän varoituksen välttämiseksi olen odottanut kutsua edellisen koodinpätkän Task.Delay-menetelmään.

Päivitetty toimintatapa on lueteltu alla. Huomaa, kuinka await-avainsanaa on käytetty juuri luomamme asynkronointimenetelmän kutsumiseen.

[HttpGet]

julkinen asynkronointi Tehtävä<>> Hanki ()

{

var data = odota GetAuthors ();

jos (data == nolla)

return NotFound ("Ei tietuetta");

palautustiedot;

}

Voit myös palauttaa mukautetun ActionResult-ilmentymän toimintatavastasi. Sinun tarvitsee vain luoda luokka, joka toteuttaa IActionResult-käyttöliittymän ja toteuttaa ExecuteResultAsync-menetelmän. Keskustelemme IActionResult- ja ActionResult-toiminnoista sekä mukautetuista ActionResult-luokista tulevassa viestissä täällä.

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