Ohjelmointi

Kuinka toimia ActionResultsin kanssa Web-sovellusliittymässä

ASP.Net Web API on kevyt kehys, jota käytetään valtiottomien ja RESTful HTTP-palvelujen rakentamiseen. Voit hyödyntää Web-sovellusliittymän toimintatuloksia ja palauttaa tietoja Web-sovellusliittymän ohjaimen menetelmistä.

Päästä alkuun

Luodaan ensin Web-API-projekti. Voit tehdä tämän luomalla tyhjän ASP.Net-projektin Visual Studio 2015: ssä ja valitsemalla Web API -valintaruudun, kun valitset projektimallia. Tallenna seuraavaksi projekti nimellä.

Huomaa, että tyhjä ASP.Net-projekti luodaan. Napsauta hiiren kakkospainikkeella Controllers solution -kansiota ja luo uusi Web API -ohjain napsauttamalla Add -> Controller. Valitse "Web API 2 Controller - Empty", kun sinua pyydetään seuraavaksi avautuvassa ikkunassa. Tallenna ohjain nimellä. Oletetaan, että tämän esimerkin ohjaimen nimi on "DefaultController".

Luodaan yhteystietoluokka nimeltä Kontakti.

julkisen luokan yhteyshenkilö

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

    }

Lisää seuraavaksi seuraava menetelmä DefaultControlleriin.

julkinen CustomActionResult Get ()

        {

Yhteyshenkilö = uusi yhteyshenkilö ();

kontakti Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

palauta uusi CustomActionResult (HttpStatusCode.OK, yhteystiedot);

        }

Huomaa CustomActionResult-luokan käyttö palautettaessa tietoja ohjaimen menetelmästä. Luodaan nyt CustomActionResult-luokka vain varmistaaksemme, että koodisi kääntyy - otamme tämän luokan käyttöön myöhemmin.

julkinen luokka CustomActionResult: IHttpActionResult

    {

public Task ExecuteAsync (CancellationToken cancellationToken)

        {

heittää uusi NotImplementedException ();

        }

    }

Työskentely ActionResultsin kanssa

Web-API-ohjaimesi voi palauttaa minkä tahansa seuraavista arvotyypeistä:

  • HttpResponseMessage: tässä tapauksessa Web-sovellusliittymäsi muuntaa palautusarvon Http-vastausviestiobjektiksi ja palauttaa sen.
  • IHttpActionResult: tässä tapauksessa Web-sovellusliittymän ajoaika muuntaa palautusarvon Http-vastausviestiobjektiksi (HttpResponseMessage-ilmentymä luodaan asynkronisesti) sisäisesti ja palauttaa sen. IHttpActionResult-käyttöliittymän (joka on esitetty Web-sovellusliittymässä 2) käyttö yksinkertaistaa yksikön testausta Web-sovellusliittymän ohjaimista ja kääri myös HttpResponseMessage-objektin luomisen.
  • void: tässä tapauksessa Web-sovellusliittymäsi palauttaisi tyhjän Http-vastauksen tilakoodilla 204.
  • Muut tyypit: tässä tapauksessa Web-sovellusliittymäsi hyödyntää asianmukaista median muotoilua sarjataakseen ja palauttaakseen tietoja Web-sovellusliittymäohjaimen menetelmästä, jonka vastetilakoodi on 200.

Seuraava koodinpätkä näyttää, kuinka voit käyttää return HttpResponseMessage -ohjelmaa Web-sovellusliittymän ohjainmenetelmästä.

[Reitti ("yhteyshenkilö")]

public HttpResponseMessage Get ()

{

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

palautusviesti;

}

Toteutetaan nyt mukautettu toimintatulos, jota käytämme palauttamaan tietoja luomastamme Web-sovellusliittymästä.

Mukautetun ActionResultin luominen

Jos haluat luoda mukautetun toiminnan tulosluokan, sinun tarvitsee vain luoda luokka, joka toteuttaa IActionResult-käyttöliittymän ja ohittaa ExecuteAsync-menetelmän.

Seuraava koodinpätkä osoittaa, kuinka voit käyttää Genericsia luomaan mukautetun toiminnan tulosluokan.

julkinen luokka CustomActionResult: IHttpActionResult

    {

yksityinen System.Net.HttpStatusCode statusCode;

T-tiedot;

public CustomActionResult (System.Net.HttpStatusCode statusCode, T-tiedot)

        {

this.statusCode = statusCode;

this.data = data;

        }

    }

Seuraava koodinpätkä osoittaa, kuinka voit luoda vastausobjektin, täyttää sen tarvittavilla tiedoilla ja palauttaa sen.

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

        {

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

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

palautusvastaus;

        }

ExecuteAsync-menetelmä kutsuu CreateResponse-menetelmän ja välittää tilakoodin ja tiedot siihen parametrina.

        public Task ExecuteAsync (CancellationToken cancellationToken)

        {

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

        }

Web-sovellusliittymän käyttö

Voit käyttää juuri luomaa Web-sovellusliittymää luomalla konsolisovelluksen ja tuomalla sitten "WebApiContrib.Formatting.ProtoBuf" -paketin projektiisi NuGetin kautta.

Olettaen, että olet luonut asiakkaan käyttämään aiemmin toteuttamaamme Web-sovellusliittymää, tässä on koodiluettelo, joka näyttää, kuinka voit käyttää Web-apia.

staattinen void Main (merkkijono [] args)

        {

var asiakas = uusi HttpClient {BaseAddress = uusi Uri ("// paikallinen isäntä: 37019 /")};

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

jos (response.IsSuccessStatusCode)

            {

Yhteyshenkilö = response.Content.ReadAsAsync (). Tulos;

Console.WriteLine ("Id =" + contact.Id + "Etunimi:" + contact.FirstName + "Sukunimi:" + contact.LastName);

            }

muu

            {

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

            }

Console.ReadKey ();

        }

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