Programmēšana

Kā strādāt ar ActionResults Web API

ASP.Net Web API ir viegls ietvars, kas tiek izmantots bezvalstnieku un RESTful HTTP pakalpojumu veidošanai. Varat izmantot Web API darbību rezultātu priekšrocības, lai atgrieztu datus no Web API kontroliera metodēm.

Darba sākšana

Vispirms izveidosim Web API projektu. Lai to izdarītu, Visual Studio 2015 izveidojiet tukšu ASP.Net projektu un atzīmējiet izvēles rūtiņu Web API, atlasot projekta veidni. Pēc tam saglabājiet projektu ar nosaukumu.

Jūs ievērosiet, ka tiek izveidots tukšs ASP.Net projekts. Ar peles labo pogu noklikšķiniet uz mapes Controllers solution un noklikšķiniet uz Add -> Controller, lai izveidotu jaunu Web API kontrolieri. Kad nākamreiz uznirstošajā logā tiek prasīts, atlasiet "Web API 2 Controller - Empty". Saglabājiet kontrolieri ar nosaukumu. Pieņemsim, ka šī piemēra kontrollera nosaukums ir "DefaultController".

Izveidosim entītiju klasi ar nosaukumu Contact.

sabiedrības klases kontakts

    {

public int Id {get; komplekts; }

publiskā virkne FirstName {get; komplekts; }

publiskā virkne Uzvārds {get; komplekts; }

    }

Pēc tam pievienojiet šo metodi DefaultController.

publiskā CustomActionResult Get ()

        {

Kontaktu kontakts = jauns Kontakts ();

kontakts.Id = 1;

kontakts.Vārds = "Joydip";

kontakts.LastName = "Kanjilal";

atgriezt jaunu CustomActionResult (HttpStatusCode.OK, kontakts);

        }

Atgriežot datus no kontrollera metodes, ņemiet vērā klases CustomActionResult lietojumu. Tagad izveidosim klasi CustomActionResult, lai nodrošinātu, ka jūsu kods tiek apkopots - mēs šo klasi ieviesīsim vēlāk.

publiskā klase CustomActionResult: IHttpActionResult

    {

publiskais uzdevums ExecuteAsync (CancellationToken cancellationToken)

        {

mest jaunu NotImplementedException ();

        }

    }

Darbs ar ActionResults

Jūsu Web API kontrolieris var atgriezt jebkuru no šiem vērtību veidiem:

  • HttpResponseMessage: šajā gadījumā jūsu tīmekļa API pārveidos atgriešanās vērtību Http atbildes ziņojuma objektā un atgriezīs to.
  • IHttpActionResult: šajā gadījumā Web API izpildlaiks atgriež atgriešanās vērtību Http atbildes ziņojuma objektā (HynttpResponseMessage eksemplārs tiek izveidots asinhroni) iekšēji un to atgriež. IHttpActionResult saskarnes (kas ieviesta Web API 2) izmantošana vienkāršo vienību testēšanu jūsu Web API kontrolieriem un arī rada objekta HttpResponseMessage izveidi.
  • void: šajā gadījumā jūsu tīmekļa API atgriezīs tukšu Http atbildi ar statusa kodu 204.
  • Citi veidi: šajā gadījumā jūsu Web API izmantotu atbilstoša datu nesēja formatēšanas priekšrocības, lai sērijveidotu un atgrieztu datus no Web API kontroliera metodes ar atbildes statusa kodu 200.

Šis koda fragments parāda, kā jūs varat izmantot return HttpResponseMessage no savas Web API kontrollera metodes.

[Maršruts ("kontakts")]

public HttpResponseMessage Get ()

{

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

atgriešanās ziņojums;

}

Tagad ieviesīsim pielāgotas darbības rezultātu, kuru izmantosim, lai atgrieztu datus no izveidotās tīmekļa API.

Pielāgota ActionResult izveide

Lai izveidotu pielāgotu darbību rezultātu klasi, viss, kas jums jādara, ir izveidot klasi, kas ievieš saskarni IActionResult un ignorē metodi ExecuteAsync.

Šis koda fragments parāda, kā varat izmantot Generics, lai izveidotu pielāgotu darbību rezultātu klasi.

publiskā klase CustomActionResult: IHttpActionResult

    {

privāts System.Net.HttpStatusCode statusCode;

T dati;

publiskais CustomActionResult (System.Net.HttpStatusCode statusCode, T dati)

        {

this.statusCode = statusCode;

this.data = dati;

        }

    }

Šis koda fragments parāda, kā jūs varat izveidot atbildes objektu, aizpildīt to ar nepieciešamajiem datiem un atgriezt.

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

        {

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

HttpResponseMessage response = pieprasījums.CreateResponse (statusCode, dati);

atbilde uz atgriešanos;

        }

Metode ExecuteAsync izsauc metodi CreateResponse un nosūta statusa kodu un datus kā parametru.

        publiskais uzdevums ExecuteAsync (CancellationToken cancellationToken)

        {

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

        }

Tīmekļa API lietošana

Lai patērētu tikko izveidoto tīmekļa API, varat izveidot konsoles lietojumprogrammu un pēc tam importēt projektā "WebApiContrib.Formatting.ProtoBuf", izmantojot NuGet.

Pieņemot, ka esat izveidojis klientu, lai patērētu Web API, kuru mēs ieviesām iepriekš, šeit ir kodu saraksts, kas parāda, kā jūs varat patērēt Web Api.

static void Main (virkne [] args)

        {

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

HttpResponseMessage response = client.GetAsync ("api / Default"). Rezultāts;

ja (atbilde.IsSuccessStatusCode)

            {

Kontaktpersona = response.Content.ReadAsAsync (). Rezultāts;

Console.WriteLine ("Id =" + contact.Id + "Vārds:" + contact.FirstName + "Uzvārds:" + contact.LastName);

            }

cits

            {

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

            }

Console.ReadKey ();

        }