Programiranje

Kako delati z ActionResults v spletnem API-ju

ASP.Net Web API je lahek okvir, ki se uporablja za gradnjo storitev HTTP brez stanja in RESTful. Rezultate dejanj v spletnem API-ju lahko izkoristite za vrnitev podatkov iz metod krmilnika spletnega API-ja.

Kako začeti

Najprej ustvarimo projekt spletnega API-ja. Če želite to narediti, v Visual Studio 2015 ustvarite prazen projekt ASP.Net in pri izbiri predloge projekta potrdite polje Web API. Nato shranite projekt z imenom.

Opazili boste, da je ustvarjen prazen projekt ASP.Net. Z desno miškino tipko kliknite mapo rešitve Controllers in kliknite Add -> Controller, da ustvarite nov krmilnik spletnega API-ja. Ko se v oknu, ki se odpre, izberete »Nadzornik spletnega API 2 - prazen«. Shranite krmilnik z imenom. Predpostavimo, da je ime krmilnika za ta primer "DefaultController".

Ustvarimo razred entitete z imenom Kontakt.

javni razred Kontakt

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

    }

Nato v privzeti krmilnik dodajte naslednjo metodo.

javni CustomActionResult Get ()

        {

Kontaktni kontakt = nov Kontakt ();

kontakt.Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

vrni nov CustomActionResult (HttpStatusCode.OK, kontakt);

        }

Upoštevajte uporabo razreda CustomActionResult med vračanjem podatkov iz metode krmilnika. Zdaj pa ustvarimo razred CustomActionResult samo zato, da zagotovimo, da se vaša koda prevaja - ta razred bomo implementirali kasneje.

javni razred CustomActionResult: IHttpActionResult

    {

javna naloga ExecuteAsync (CancellationToken cancellationToken)

        {

vrzi novo NotImplementedException ();

        }

    }

Delo z ActionResults

Krmilnik spletnega API-ja lahko vrne katero koli od naslednjih vrst vrednosti:

  • HttpResponseMessage: v tem primeru bi vaš spletni API pretvoril vrnjeno vrednost v objekt sporočila Http in jo vrnil.
  • IHttpActionResult: v tem primeru izvajalno okolje Web API vrne vrednost v objekt sporočila Http odziv (primerek HttpResponseMessage se ustvari asinhrono) in ga vrne. Uporaba vmesnika IHttpActionResult (uveden v spletnem API 2) poenostavlja enotno testiranje krmilnikov spletnega API-ja in obenem ustvarja objekt HttpResponseMessage.
  • void: v tem primeru bi vaš spletni API vrnil prazen Http odgovor s kodo stanja 204.
  • Druge vrste: v tem primeru bi vaš spletni API izkoristil ustrezen oblikovalnik medijev za serializacijo in vrnitev podatkov iz metode krmilnika spletnega API-ja s kodo stanja odziva 200

Naslednji delček kode prikazuje, kako lahko uporabite vrnitev HttpResponseMessage iz metode krmilnika spletnega API-ja.

[Pot ("stik")]

public HttpResponseMessage Get ()

{

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

povratno sporočilo;

}

Zdaj izvedimo rezultat dejanja po meri, ki ga bomo uporabili za vrnitev podatkov iz spletnega API-ja, ki smo ga ustvarili.

Ustvarjanje ActionResult po meri

Če želite ustvariti razred rezultatov dejanj po meri, morate samo ustvariti razred, ki implementira vmesnik IActionResult in preglasi metodo ExecuteAsync.

Naslednji delček kode prikazuje, kako lahko z generiki ustvarite razred rezultatov dejanja po meri.

javni razred CustomActionResult: IHttpActionResult

    {

private System.Net.HttpStatusCode statusCode;

T podatki;

javni CustomActionResult (System.Net.HttpStatusCode statusCode, T podatki)

        {

this.statusCode = statusCode;

this.data = podatki;

        }

    }

Naslednji delček kode prikazuje, kako lahko ustvarite odzivni objekt, ga napolnite s potrebnimi podatki in vrnete.

public HttpResponseMessage CreateResponse (System.Net.HttpStatusCode statusCode, T podatki)

        {

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

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

povratni odgovor;

        }

Metoda ExecuteAsync pokliče metodo CreateResponse in ji kot parameter posreduje kodo stanja in podatke.

        javna naloga ExecuteAsync (CancellationToken cancellationToken)

        {

vrni Task.FromResult (CreateResponse (this.statusCode, this.data));

        }

Uporaba spletnega API-ja

Če želite porabiti spletni API, ki ste ga pravkar ustvarili, lahko ustvarite konzolo in nato uvozite paket "WebApiContrib.Formatting.ProtoBuf" v svoj projekt prek NuGet.

Ob predpostavki, da ste odjemalca ustvarili za uporabo spletnega API-ja, ki smo ga že uvedli, je tukaj seznam kod, ki prikazuje, kako lahko uporabljate Web Api.

statična praznina Main (string [] args)

        {

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

HttpResponseMessage response = client.GetAsync ("api / Default"). Rezultat;

če (response.IsSuccessStatusCode)

            {

Kontaktni stik = response.Content.ReadAsAsync (). Rezultat;

Console.WriteLine ("Id =" + contact.Id + "Ime:" + contact.FirstName + "Priimek:" + contact.LastName);

            }

drugače

            {

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

            }

Console.ReadKey ();

        }

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