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 ();
}