Programavimas

Kaip grąžinti duomenis iš ASP.NET Core Web API

Mes galime trimis būdais grąžinti duomenis ir HTTP būsenos kodus iš veiksmo metodo ASP.NET Core. Galite grąžinti konkretų tipą, grąžinti IActionResult tipo egzempliorių arba grąžinti ActionResult tipo egzempliorių.

Nors konkretaus tipo grąžinimas yra paprasčiausias būdas, „IActionResult“ leidžia grąžinti duomenis ir HTTP kodus, o „ActionResult“ - grąžinti tipą, kuris pratęsia „IActionResult“. „ActionResult“ gali būti naudojamas HTTP būsenos kodui, duomenims ar abiem siųsti iš veiksmo metodo.

Šiame straipsnyje aptariama, kaip mes galime grąžinti duomenis ASP.NET Core Web API naudodami kiekvieną iš šių tipų, su atitinkamais kodų pavyzdžiais C #.

Norėdami dirbti su šiame straipsnyje pavaizduotais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

Sukurkite ASP.Net Core API projektą

Pirmiausia sukurkime ASP.NET Core projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.NET Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.Net Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.
  7. Tada rodomame lange „Kurti naują ASP.Net pagrindinę žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET Core kaip vykdymo laiką ir ASP.NET Core 2.2 (ar naujesnę). Čia naudosiu ASP.NET Core 3.0.
  8. Pasirinkite „API“ kaip projekto šabloną, kad sukurtumėte naują ASP.NET Core API programą.
  9. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  10. Įsitikinkite, kad autentifikavimas nustatytas kaip „Be autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  11. Spustelėkite Sukurti.

Tai sukurs naują ASP.NET Core API projektą „Visual Studio“. Dabar „Sprendimų naršyklės“ lange pasirinkite „Controllers solution“ aplanką ir spustelėkite „Add -> Controller…“, kad sukurtumėte naują valdiklį, pavadintą „DefaultController“. Šį projektą naudosime tolesniuose šio straipsnio skyriuose nagrinėdami veiksmų metodų duomenis.

Jei norite paprasto būdo išbandyti toliau naudojamus veiksmų metodus, rekomenduoju pasinaudoti „Postman“ pranašumais. „Postman“ kopiją galite atsisiųsti iš čia.

Sukurkite valdiklio ir modelio klases ASP.NET Core

Sukurkite naują sprendimų aplanką ir pavadinkite jį „Modeliai“. Čia rasite savo modelių klases. Šis kodų sąrašas parodo, kaip galite sukurti paprastą modelio klasę pavadinimu Autorius.

visuomenės klasės Autorius

    {

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

    }

Kol kas viskas gerai. Dabar pakeiskite sugeneruotą „DefaultController“ klasės kodą žemiau pateiktu kodų sąrašu.

naudojant „Microsoft.AspNetCore.Mvc“;

naudojant „System.Collections.Generic“;

vardų sritis CoreWebAPI. Valdikliai

{

[Maršrutas („api / [valdiklis]“)]

[ApiController]

viešoji klasė DefaultController: ControllerBase

    {

privatus, tik skaitomas Sąrašo autoriai = naujas sąrašas ();

public DefaultController ()

        {

autoriai. Pridėti (naujas autorius ()

            {

Id = 1,

FirstName = "Joydip",

Pavardė = "Kanjilal"

            });

autoriai. Pridėti (naujas autorius ()

            {

Id = 2,

FirstName = "Steve",

Pavardė = "Smithas"

            });

        }

[HttpGet]

public IEnumerable Get ()

        {

grįžtantys autoriai;

        }

[HttpGet ("{id}", vardas = "Gauti")]

public Author Get (int id)

        {

grąžinti autorius.Raskite (x => x.Id == id);

        }

    }

}

Grąžinkite konkretų tipą iš veiksmo metodo ASP.NET Core

Paprasčiausias būdas grąžinti duomenis iš veiksmo metodo yra grąžinti tam tikrą tipą. Aukščiau pateiktame kodų sąraše metodas Gauti veiksmą pateikia autorių egzempliorių sąrašą. Šie egzemplioriai sukuriami ir inicijuojami „DefaultController“ klasės konstruktoriuje. Toliau pateikiamas jūsų veiksmų metodas. Atminkite, kad jis grąžina IEnumerable.

[HttpGet]

public IEnumerable Get ()

{

grįžtantys autoriai;

}

Nuo ASP.NET Core 3.0 taip pat turite galimybę grąžinti „IAsyncEnumerable“ iš veiksmo metodo. Nors „IEnumerable“ atlieka sinchroninę rinkimo iteraciją, „IAsyncEnumerable“ - asinchroninę iteraciją. Taigi „IAsyncEnumerable“ yra efektyvesnė, nes nėra blokuojančių skambučių. (Toliau aptarsiu „IAsyncEnumerable“ būsimame įraše čia.)

Štai kaip galite iš naujo parašyti ankstesnį veiksmo metodą naudodami „IAsyncEnumerable“.

[HttpGet]

public async IAsyncEnumerable Get ()

{

var autoriai = laukia „GetAuthors“ ();

laukti foreach (var autorius autoriams)

   {

pajamingumo grąžinimo autorius;

   }

}

Grąžinkite IActionResult tipo egzempliorių iš veiksmo metodo ASP.NET Core

Galite pasinaudoti „IActionResult“ sąsaja, kai norite grąžinti duomenis ir HTTP kodus iš savo veiksmo metodo. Šis kodo fragmentas parodo, kaip tai galima pasiekti.

[HttpGet]

public IActionResult Get ()

{

jei (autoriai == nulis)

grąžinti „NotFound“ („No records“);

grįžti Ok (autoriai);

}

„IActionResult“ sąsają įgyvendina „OkResult“, „NotFoundResult“, „CreatedResult“, „NoContentResult“, „BadRequestResult“, „UnauthorizedResult“ ir „UnsupportedMediaTypeResult“ klasės.

Ankstesniame kodo fragmente metodai „NotFound“ () ir „Ok“ () pateikia IActionResult tipo egzempliorius.

Grąžinkite „ActionResult“ tipo egzempliorių iš veiksmo metodo ASP.NET Core

„ActionResult“ buvo pristatytas ASP.NET Core 2.1. „ActionResult“ yra tipas, įgyvendinantis „IActionResult“ sąsają. Galite pasinaudoti „ReturnResult“ tipo pranašumais, jei norite grąžinti tipą, pratęsiantį „ActionResult“, ar bet kurį kitą konkretų tipą (pvz., „Autorius“ mūsų pavyzdyje).

Šis kodo fragmentas parodo, kaip galime grąžinti „ActionResult“ iš veiksmo metodo.

[HttpGet]

viešas „ActionResult“ Gauti ()

{

jei (autoriai == nulis)

grąžinti „NotFound“ („No records“);

grįžtantys autoriai;

}

Kaip matote ankstesniame kodo fragmente, nebereikia apvynioti grąžintino objekto pagal metodą „Ok ()“ - galite jį grąžinti tokį, koks yra.

Padarykime tai dabar asinchroniškai. Apsvarstykite šį asinchroninį metodą, kuris pateikia autorių sąrašą.

privati ​​asinchroninė užduotis „GetAuthors“ ()

{

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

grįžtantys autoriai;

}

Asinchroninis metodas turėtų turėti bent vieną laukimo sakinį. Jei jis neturi jokių laukimo sakinių, kompiliatorius sugeneruos įspėjimą, nurodantį, kad metodas bus vykdomas sinchroniškai. Kad išvengčiau šio kompiliatoriaus įspėjimo, laukiau iškvietimo į užduoties atidėjimo metodą ankstesniame kodo fragmente.

Atnaujintas veiksmų metodas pateiktas žemiau. Atkreipkite dėmesį, kaip laukiamasis raktinis žodis buvo naudojamas mūsų sukurtam asinchroniniam metodui iškviesti.

[HttpGet]

viešas asinchroninis uždavinys<>> Gauti ()

{

var data = laukti „GetAuthors“ ();

jei (duomenys == null)

grąžinti „NotFound“ („No record“);

grąžinimo duomenys;

}

Taip pat galite grąžinti tinkinto „ActionResult“ egzempliorių naudodami savo veiksmo metodą. Viskas, ką jums reikia padaryti, tai sukurti klasę, įdiegiančią „IActionResult“ sąsają ir „ExecuteResultAsync“ metodą. Ateinančiame įraše aptarsime „IActionResult“ ir „ActionResult“ bei individualias „ActionResult“ klases.

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