Programmering

Hvordan jobbe med ActionResults i Web API

ASP.Net Web API er et lett rammeverk som brukes til å bygge statsløse og RESTful HTTP-tjenester. Du kan dra nytte av Handlingsresultater i Web API for å returnere data fra Web API-kontrollermetodene.

Starter

La oss lage et Web API-prosjekt først. For å gjøre dette, opprett et tomt ASP.Net-prosjekt i Visual Studio 2015 og merk av for Web API når du velger prosjektmalen. Lagre deretter prosjektet med et navn.

Du vil merke at et tomt ASP.Net-prosjekt er opprettet. Høyreklikk på løsningsmappen Controllers og klikk Legg til -> Controller for å opprette en ny Web API-kontroller. Velg "Web API 2 Controller - Empty" når du blir bedt om det i vinduet som dukker opp neste. Lagre kontrolleren med et navn. La oss anta at navnet på kontrolleren for dette eksemplet er "DefaultController".

La oss opprette en enhetsklasse som heter Kontakt.

offentlig klasse Kontakt

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

    }

Deretter legger du til følgende metode i DefaultController.

offentlig CustomActionResult Get ()

        {

Kontaktkontakt = ny kontakt ();

contact.Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

returner nytt CustomActionResult (HttpStatusCode.OK, kontakt);

        }

Legg merke til bruken av klassen CustomActionResult mens du returnerer data fra kontrollermetoden. La oss nå lage en CustomActionResult-klasse bare for å sikre at koden din kompileres - vi implementerer denne klassen senere.

offentlig klasse CustomActionResult: IHttpActionResult

    {

public Task ExecuteAsync (CancellationToken cancellationToken)

        {

kaste nye NotImplementedException ();

        }

    }

Arbeide med ActionResults

Web API-kontrolleren din kan returnere en av følgende verdityper:

  • HttpResponseMessage: i dette tilfellet konverterer web-APIen returverdien til et Http-svarmeldingsobjekt og returnerer den.
  • IHttpActionResult: i dette tilfellet konverterer Web API-kjøretiden returverdien til et Http-svarmeldingsobjekt (en HttpResponseMessage-forekomst opprettes asynkront) internt og returnerer den. Bruk av IHttpActionResult-grensesnittet (introdusert i Web API 2) forenkler enhetstesting av dine Web API-kontrollere og pakker også opprettelsen av et HttpResponseMessage-objekt.
  • ugyldig: i dette tilfellet vil web-API-en din returnere et tomt Http-svar med en statuskode på 204.
  • Andre typer: i dette tilfellet vil din web-API dra nytte av riktig medieformatering for å serieisere og returnere data fra Web API-kontrollermetoden med en responsstatuskode på 200.

Følgende kodebit viser hvordan du kan bruke retur HttpResponseMessage fra din Web API-kontrollermetode.

[Rute ("kontakt")]

offentlig HttpResponseMessage Get ()

{

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

returmelding;

}

La oss nå implementere et tilpasset handlingsresultat som vi vil bruke til å returnere data fra Web API vi opprettet.

Opprette et tilpasset ActionResult

For å opprette en tilpasset handlingsresultatklasse er alt du trenger å gjøre, opprette en klasse som implementerer IActionResult-grensesnittet og overstyrer ExecuteAsync-metoden.

Følgende kodebit viser hvordan du kan bruke Generics til å lage en tilpasset handlingsresultatklasse.

offentlig klasse CustomActionResult: IHttpActionResult

    {

privat System.Net.HttpStatusCode statusCode;

T-data;

offentlig CustomActionResult (System.Net.HttpStatusCode statusCode, T data)

        {

this.statusCode = statusCode;

dette. data = data;

        }

    }

Følgende kodebit viser hvordan du kan opprette responsobjektet, fylle det ut med nødvendige data og returnere det.

offentlig HttpResponseMessage CreateResponse (System.Net.HttpStatusCode statusCode, T data)

        {

HttpRequestMessage forespørsel = ny HttpRequestMessage (); forespørsel.Properties.Add (System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration ());

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

returrespons;

        }

ExecuteAsync-metoden kaller CreateResponse-metoden og sender statuskoden og dataene til den som parameter.

        public Task ExecuteAsync (CancellationToken cancellationToken)

        {

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

        }

Forbruker Web API

For å konsumere Web API du nettopp har opprettet, kan du opprette et konsollprogram og deretter importere "WebApiContrib.Formatting.ProtoBuf" -pakken til prosjektet ditt via NuGet.

Forutsatt at du har opprettet klienten for å konsumere Web API vi implementerte tidligere, er her kodelisten som viser hvordan du kan konsumere Web Api.

statisk tomrom Main (streng [] args)

        {

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

HttpResponseMessage respons = client.GetAsync ("api / Standard"). Resultat;

if (respons.IsSuccessStatusCode)

            {

Kontaktkontakt = respons.Content.ReadAsAsync (). Resultat;

Console.WriteLine ("Id =" + contact.Id + "Fornavn:" + contact.FirstName + "Etternavn:" + contact.LastName);

            }

ellers

            {

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

            }

Console.ReadKey ();

        }

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