Programovanie

Ako pracovať s ActionResults vo webovom API

ASP.Net Web API je odľahčený rámec používaný na vytváranie bezstavových služieb RESTful HTTP. Akčné výsledky vo webovom API môžete využiť na vrátenie údajov z metód radiča webového API.

Začíname

Najprv vytvoríme projekt webového API. Ak to chcete urobiť, vytvorte prázdny projekt ASP.Net v Visual Studio 2015 a pri výbere šablóny projektu začiarknite políčko Web API. Ďalej uložte projekt s názvom.

Všimli by ste si, že je vytvorený prázdny projekt ASP.Net. Pravým tlačidlom myši kliknite na priečinok riešenia Controllers a kliknutím na Add -> Controller vytvorte nový radič webového API. Po zobrazení výzvy v nasledujúcom okne vyberte možnosť „Ovládač webového rozhrania API API 2 - prázdny“. Uložte ovládač s menom. Predpokladajme, že názov ovládača pre tento príklad je „DefaultController“.

Vytvorme triedu entít s názvom Kontakt.

verejná trieda Kontakt

    {

public int Id {get; sada; }

verejný reťazec FirstName {get; sada; }

verejný reťazec Priezvisko {get; sada; }

    }

Ďalej pridajte do DefaultController nasledujúcu metódu.

public CustomActionResult Get ()

        {

Kontaktný kontakt = nový Kontakt ();

contact.Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

vrátiť nový CustomActionResult (HttpStatusCode.OK, kontakt);

        }

Všimnite si použitie triedy CustomActionResult pri vracaní údajov z metódy radiča. Teraz vytvorme triedu CustomActionResult, aby sme zaistili kompiláciu vášho kódu - túto triedu implementujeme neskôr.

verejná trieda CustomActionResult: IHttpActionResult

    {

verejná úloha ExecuteAsync (CancellationToken CancelToken)

        {

hodiť nový NotImplementedException ();

        }

    }

Práca s ActionResults

Váš radič webového rozhrania API môže vrátiť ktorýkoľvek z nasledujúcich typov hodnôt:

  • HttpResponseMessage: v takom prípade by vaše webové rozhranie API konvertovalo návratovú hodnotu na objekt správy odpovede Http a vrátilo ju.
  • IHttpActionResult: v takom prípade prevádzkové rozhranie Web API prevádza návratovú hodnotu na objekt správy odpovede Http (inštancia HttpResponseMessage je vytvorená asynchrónne) interne a vráti ju. Použitie rozhrania IHttpActionResult (zavedené vo webovom rozhraní API 2) zjednodušuje testovanie jednotiek vašich radičov webového rozhrania API a tiež zahaľuje vytváranie objektu HttpResponseMessage.
  • void: v takom prípade by vaše webové API vrátilo prázdnu odpoveď Http so stavovým kódom 204.
  • Iné typy: v takom prípade by vaše webové rozhranie API využilo vhodný formátovač médií na serializáciu a vrátenie údajov z metódy radiča webového rozhrania API s kódom stavu odpovede 200.

Nasledujúci úryvok kódu ukazuje, ako môžete použiť návratovú HttpResponseMessage z vašej metódy radiča webového API.

[Trasa („kontakt“)]

verejná HttpResponseMessage Get ()

{

HttpResponseMessage message = Request.CreateResponse (HttpStatusCode.OK, kontakt);

spätná správa;

}

Poďme teraz implementovať výsledok vlastnej akcie, ktorý použijeme na vrátenie údajov z webového rozhrania API, ktoré sme vytvorili.

Vytvára sa vlastný ActionResult

Ak chcete vytvoriť vlastnú triedu výsledkov akcie, všetko, čo musíte urobiť, je vytvoriť triedu, ktorá implementuje rozhranie IActionResult a prepíše metódu ExecuteAsync.

Nasledujúci úryvok kódu ukazuje, ako môžete použiť Generics na vytvorenie vlastnej triedy výsledkov akcie.

verejná trieda CustomActionResult: IHttpActionResult

    {

private System.Net.HttpStatusCode statusCode;

T dáta;

public CustomActionResult (System.Net.HttpStatusCode statusCode, T dáta)

        {

this.statusCode = statusCode;

this.data = údaje;

        }

    }

Nasledujúci úryvok kódu ukazuje, ako môžete vytvoriť objekt odpovede, naplniť ho potrebnými údajmi a vrátiť ho.

verejný HttpResponseMessage CreateResponse (System.Net.HttpStatusCode statusCode, T dáta)

        {

HttpRequestMessage request = nový HttpRequestMessage (); request.Properties.Add (System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, nový HttpConfiguration ());

HttpResponseMessage response = request.CreateResponse (statusCode, data);

spätná odozva;

        }

Metóda ExecuteAsync volá metódu CreateResponse a odovzdáva jej stavový kód a údaje ako parameter.

        verejná úloha ExecuteAsync (CancellationToken CancelToken)

        {

návrat Task.FromResult (CreateResponse (this.statusCode, this.data));

        }

Náročné na webové API

Ak chcete využiť webové rozhranie API, ktoré ste práve vytvorili, môžete vytvoriť konzolovú aplikáciu a potom importovať balík „WebApiContrib.Formatting.ProtoBuf“ do svojho projektu cez NuGet.

Za predpokladu, že ste klienta vytvorili na využitie webového rozhrania API, ktoré sme implementovali skôr, tu je zoznam kódov, ktorý ukazuje, ako môžete využívať webové rozhranie API.

static void Main (reťazec [] args)

        {

var client = new HttpClient {BaseAddress = new Uri ("// localhost: 37019 /")};

HttpResponseMessage response = client.GetAsync ("api / Default"). Výsledok;

if (response.IsSuccessStatusCode)

            {

Kontaktný kontakt = response.Content.ReadAsAsync (). Výsledok;

Console.WriteLine ("Id =" + contact.Id + "Meno:" + contact.FirstName + "Priezvisko:" + contact.LastName);

            }

inak

            {

Console.WriteLine ("{0} ({1})", (int) response.StatusCode, response.ReasonPhrase);

            }

Console.ReadKey ();

        }

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