Programavimas

Kaip dirbti su „ActionResults“ žiniatinklio API

ASP.Net žiniatinklio API yra lengva sistema, naudojama kuriant be pilietybės ir RESTful HTTP paslaugas. Norėdami grąžinti duomenis iš žiniatinklio API valdiklio metodų, galite pasinaudoti veiksmo rezultatais žiniatinklio API.

Darbo pradžia

Pirmiausia sukursime žiniatinklio API projektą. Norėdami tai padaryti, sukurkite tuščią ASP.Net projektą „Visual Studio 2015“ ir pažymėkite žymės langelį „Web API“, kai pasirenkate projekto šabloną. Tada išsaugokite projektą su pavadinimu.

Pastebėsite, kad sukurtas tuščias ASP.Net projektas. Dešiniuoju pelės mygtuku spustelėkite „Controllers“ sprendimo aplanką ir spustelėkite Pridėti -> „Controller“, kad sukurtumėte naują žiniatinklio API valdiklį. Kai būsite paraginti šalia pasirodžiusiame lange, pasirinkite „Web API 2 Controller - Empty“. Išsaugokite valdiklį su pavadinimu. Tarkime, kad šio pavyzdžio valdiklio pavadinimas yra „DefaultController“.

Sukurkime objektų klasę pavadinimu „Kontaktas“.

viešoji klasė Kontaktai

    {

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

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

    }

Tada pridėkite šį metodą prie „DefaultController“.

public CustomActionResult Get ()

        {

Kontaktinis kontaktas = naujas kontaktas ();

kontaktas.Id = 1;

kontaktas.Vardas = "Joydip";

contact.LastName = "Kanjilal";

grąžinti naują „CustomActionResult“ (HttpStatusCode.OK, kontaktas);

        }

Atkreipkite dėmesį į „CustomActionResult“ klasės naudojimą grąžinant duomenis iš valdiklio metodo. Dabar sukursime „CustomActionResult“ klasę, kad įsitikintume, jog jūsų kodas yra kompiliuojamas - šią klasę įgyvendinsime vėliau.

viešoji klasė „CustomActionResult“: IHttpActionResult

    {

public Task ExecuteAsync (CancellationToken cancellationToken)

        {

mesti naują NotImplementedException ();

        }

    }

Darbas su „ActionResults“

Jūsų žiniatinklio API valdiklis gali pateikti bet kurį iš šių reikšmių tipų:

  • „HttpResponseMessage“: šiuo atveju jūsų žiniatinklio API konvertuos grąžinimo vertę į „Http“ atsakymo pranešimo objektą ir grąžins jį.
  • IHttpActionResult: šiuo atveju žiniatinklio API vykdymo laikas grąžina vertę į Http atsakymo pranešimo objektą („HttpResponseMessage“ egzempliorius sukurtas asinchroniškai) viduje ir grąžina jį. Naudojant „IHttpActionResult“ sąsają (įdiegtą žiniatinklio API 2), supaprastinamas jūsų žiniatinklio API valdiklių testavimas ir užbaigiamas „HttpResponseMessage“ objekto kūrimas.
  • negaliojantis: šiuo atveju jūsų žiniatinklio API grąžins tuščią „Http“ atsakymą, kurio būsenos kodas yra 204.
  • Kiti tipai: šiuo atveju jūsų žiniatinklio API pasinaudos tinkamu laikmenos formatavimo pranašumu, kad surašytų ir grąžintų duomenis iš žiniatinklio API valdiklio metodo su atsakymo būsenos kodu 200.

Šis kodo fragmentas parodo, kaip galite naudoti grąžinimo „HttpResponseMessage“ iš savo žiniatinklio API valdiklio metodo.

[Maršrutas („kontaktas“)]

public HttpResponseMessage Get ()

{

HttpResponseMessage pranešimas = Request.CreateResponse (HttpStatusCode.OK, kontaktas);

grąžinimo pranešimas;

}

Dabar įgyvendinkime tinkinto veiksmo rezultatą, kurį naudosime grąžindami duomenis iš sukurtos žiniatinklio API.

Sukurti pasirinktinį „ActionResult“

Norėdami sukurti pasirinktinį veiksmo rezultatų klasę, tereikia sukurti klasę, kuri įgyvendina „IActionResult“ sąsają ir nepaiso „ExecuteAsync“ metodo.

Šis kodo fragmentas parodo, kaip galite naudoti „Generics“ kurdami tinkintą veiksmų rezultatų klasę.

viešoji klasė „CustomActionResult“: IHttpActionResult

    {

privatus System.Net.HttpStatusCode statusCode;

T duomenys;

public CustomActionResult (System.Net.HttpStatusCode statusCode, T duomenys)

        {

this.statusCode = statusCode;

tai.duomenys = duomenys;

        }

    }

Šis kodo fragmentas parodo, kaip galite sukurti atsakymo objektą, užpildyti jį būtinais duomenimis ir grąžinti.

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

        {

„HttpRequestMessage“ užklausa = nauja „HttpRequestMessage“); request.Properties.Add (System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration ());

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

grįžimo atsakymas;

        }

„ExecuteAsync“ metodas iškviečia „CreateResponse“ metodą ir perduoda būsenos kodą bei duomenis jam kaip parametrą.

        public Task ExecuteAsync (CancellationToken cancellationToken)

        {

grąžinti Task.FromResult (CreateResponse (this.statusCode, this.data));

        }

Žiniatinklio API vartojimas

Norėdami naudoti ką tik sukurtą žiniatinklio API, galite sukurti konsolės programą ir tada importuoti „WebApiContrib.Formatting.ProtoBuf“ paketą į savo projektą per „NuGet“.

Darant prielaidą, kad sukūrėte klientą naudoti anksčiau įdiegtą žiniatinklio API, čia pateikiamas kodų sąrašas, rodantis, kaip galite naudoti žiniatinklio API.

static void Main (string [] args)

        {

var klientas = naujas HttpClient {BaseAddress = naujas Uri ("// localhost: 37019 /")};

HttpResponseMessage response = klientas.GetAsync ("api / Default"). Rezultatas;

jei (response.IsSuccessStatusCode)

            {

Kontaktinis kontaktas = response.Content.ReadAsAsync (). Rezultatas;

Console.WriteLine ("Id =" + contact.Id + "Vardas:" + contact.FirstName + "Pavardė:" + contact.LastName);

            }

Kitas

            {

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

            }

Pultas.ReadKey ();

        }

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