Programiranje

Kako vrniti podatke iz spletnega API-ja ASP.NET Core

Na voljo imamo tri načine za vrnitev podatkov in kod stanja HTTP iz akcijske metode v ASP.NET Core. Vrnete lahko določen tip, vrnete primerek tipa IActionResult ali primerek tipa ActionResult.

Čeprav je vrnitev določene vrste najpreprostejši način, IActionResult omogoča vrnitev podatkov in kod HTTP, ActionResult pa vrne vrsto, ki razširja IActionResult. ActionResult je mogoče uporabiti za pošiljanje kode stanja HTTP, podatkov ali obojega iz akcijske metode.

Ta članek predstavlja razpravo o tem, kako lahko vrnemo podatke v spletnem API-ju ASP.NET Core z uporabo vsake od teh vrst, z ustreznimi primeri kode v jeziku C #.

Če želite delati s primeri kode, prikazanimi v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt ASP.Net Core API

Najprej ustvarimo projekt ASP.NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na seznamu predlog izberite »ASP.Net Core Web Application«.
  4. Kliknite Naprej.
  5. V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.
  7. V naslednjem oknu »Ustvari novo spletno aplikacijo ASP.Net Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 2.2 (ali novejšo) s spustnega seznama na vrhu. Tukaj bom uporabljal ASP.NET Core 3.0.
  8. Kot predlogo projekta izberite »API«, da ustvarite novo aplikacijo ASP.NET Core API.
  9. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  10. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  11. Kliknite Ustvari.

To bo ustvarilo nov projekt API-ja ASP.NET Core v Visual Studio. Zdaj izberite mapo rešitve Controllers v oknu Solution Explorer in kliknite »Dodaj -> Controller ...«, da ustvarite nov krmilnik z imenom DefaultController. Ta projekt bomo uporabili za raziskovanje vračanja podatkov iz akcijskih metod v naslednjih oddelkih tega članka.

Če želite na preprost način preizkusiti spodaj uporabljene akcijske metode, priporočam, da izkoristite Postman. Kopijo poštarja lahko prenesete od tukaj.

Ustvarite razrede krmilnika in modela v ASP.NET Core

Ustvarite novo mapo rešitve in jo poimenujte Modeli. Tu boste postavili svoje modele. Naslednji seznam kod ponazarja, kako lahko ustvarite preprost razred modela z imenom Author.

javni razred Avtor

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

    }

Zaenkrat dobro. Zdaj nadomestite ustvarjeno kodo razreda DefaultController s spodnjim seznamom kod.

z uporabo Microsoft.AspNetCore.Mvc;

z uporabo System.Collections.Generic;

imenski prostor CoreWebAPI.Controllers

{

[Pot ("api / [krmilnik]")]

[ApiController]

javni razred DefaultController: ControllerBase

    {

zasebni avtorji samo za branje = nov seznam ();

javni DefaultController ()

        {

avtorji.Dodaj (nov avtor ()

            {

Id = 1,

FirstName = "Joydip",

LastName = "Kanjilal"

            });

avtorji.Dodaj (nov avtor ()

            {

Id = 2,

FirstName = "Steve",

LastName = "Smith"

            });

        }

[HttpGet]

javni IEnumerable Get ()

        {

vrnitev avtorjev;

        }

[HttpGet ("{id}", Name = "Get")]

javni avtor Get (int id)

        {

vrni avtorje.Poišči (x => x.Id == id);

        }

    }

}

Vrnite določeno vrsto iz akcijske metode v ASP.NET Core

Podatke iz akcijske metode lahko najpreprosteje vrnete tako, da vrnete določeno vrsto. V zgornjem seznamu kod je metoda Pridobi dejanje vrne seznam primerkov avtorja. Ti primerki so ustvarjeni in inicializirani v konstruktorju razreda DefaultController. Spodaj je znova način akcije za vašo referenco. Upoštevajte, da vrne IEnumerable.

[HttpGet]

javni IEnumerable Get ()

{

vrnitev avtorjev;

}

Začenši z ASP.NET Core 3.0 imate tudi možnost vrnitve IAsyncEnumerable iz metode dejanja. Medtem ko IEnumerable izvaja sinhrono ponovitev zbirke, IAsyncEnumerable izvaja asinhrono ponovitev. Tako je IAsyncEnumerable učinkovitejši, ker ni blokirnih klicev. (O IAsyncEnumerable bom razpravljal naprej v prihodnji objavi tukaj.)

Tukaj je opisano, kako lahko z uporabo IAsyncEnumerable znova napišete prejšnjo akcijsko metodo.

[HttpGet]

javni async IAsyncEnumerable Get ()

{

var avtorji = počakajte GetAuthors ();

await foreach (var avtor v avtorjih)

   {

avtor donosa donosa;

   }

}

Vrni primerek tipa IActionResult iz metode dejanja v ASP.NET Core

Vmesnik IActionResult lahko izkoristite, če želite iz metode dejanja vrniti tako podatke kot kode HTTP. Naslednji delček kode prikazuje, kako je to mogoče doseči.

[HttpGet]

javni IActionResult Get ()

{

če (avtorji == null)

return NotFound ("Ni zapisov");

vrni se Ok (avtorji);

}

Vmesnik IActionResult izvajajo razredi OkResult, NotFoundResult, CreatedResult, NoContentResult, BadRequestResult, UnauthorizedResult in UnsupportedMediaTypeResult.

V prejšnjem delčku kode metode NotFound () in Ok () vrneta primerke tipa IActionResult.

Vrni primerek tipa ActionResult iz akcijske metode v ASP.NET Core

ActionResult je bil predstavljen v ASP.NET Core 2.1. ActionResult je vrsta, ki izvaja vmesnik IActionResult. Vrnitev ActionResult lahko izkoristite za vrnitev vrste, ki razširja ActionResult ali katero koli drugo določeno vrsto (kot je avtor v našem primeru).

Naslednji delček kode ponazarja, kako lahko iz metode dejanja vrnemo ActionResult.

[HttpGet]

javni ActionResult Pridobite ()

{

če (avtorji == null)

return NotFound ("Ni zapisov");

vrnitev avtorjev;

}

Kot lahko vidite v prejšnjem delčku kode, vam ni treba več zaviti predmeta, ki ga želite vrniti, v metodo Ok () - lahko ga preprosto vrnete, kot je.

Naredimo to zdaj asinhrono. Razmislite o naslednji asinhronski metodi, ki vrne seznam avtorjev.

zasebno asinh. opravilo GetAuthors ()

{

počakajte Task.Delay (100) .ConfigureAwait (false);

vrnitev avtorjev;

}

Asinhrona metoda mora imeti vsaj en stavek await. Če nima nobenih stavkov za čakanje, bo prevajalnik ustvaril opozorilo, da se bo metoda izvajala sinhrono. Da bi se izognil temu opozorilu prevajalnika, sem v prejšnjem delčku kode čakal na klic metode Task.Delay.

Posodobljena metoda delovanja je navedena spodaj. Upoštevajte, kako je bila ključna beseda await uporabljena za pravkar ustvarjeno metodo async.

[HttpGet]

javna asinh. naloga<>> Pridobite ()

{

var data = await GetAuthors ();

če (podatki == null)

return NotFound ("Ni zapisa");

vrniti podatke;

}

Primer metode ActionResult po meri lahko vrnete tudi iz metode dejanja. Vse, kar morate storiti, je ustvariti razred, ki izvaja vmesnik IActionResult in implementira metodo ExecuteResultAsync. O IActionResult in ActionResult ter o razredih ActionResult po meri bomo razpravljali v prihodnji objavi tukaj.

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