Προγραμματισμός

Τρόπος εργασίας με το ActionResults στο Web API

Το ASP.Net Web API είναι ένα ελαφρύ πλαίσιο που χρησιμοποιείται για τη δημιουργία υπηρεσιών HTTP χωρίς κατάσταση και RESTful. Μπορείτε να επωφεληθείτε από τα Αποτελέσματα δράσης στο Web API για να επιστρέψετε δεδομένα από τις μεθόδους ελεγκτή API Ιστού.

Ξεκινώντας

Ας δημιουργήσουμε πρώτα ένα έργο Web API. Για να το κάνετε αυτό, δημιουργήστε ένα κενό έργο ASP.Net στο Visual Studio 2015 και επιλέξτε το πλαίσιο ελέγχου Web API κατά την επιλογή του προτύπου έργου. Στη συνέχεια, αποθηκεύστε το έργο με ένα όνομα.

Θα παρατηρήσετε ότι δημιουργείται ένα κενό έργο ASP.Net. Κάντε δεξί κλικ στο φάκελο Λύσεις ελεγκτών και κάντε κλικ στο Προσθήκη -> Ελεγκτής για να δημιουργήσετε έναν νέο ελεγκτή API Ιστού. Επιλέξτε το "Web API 2 Controller - Empty" όταν σας ζητηθεί στο παράθυρο που εμφανίζεται στη συνέχεια. Αποθηκεύστε τον ελεγκτή με όνομα. Ας υποθέσουμε ότι το όνομα του ελεγκτή για αυτό το παράδειγμα είναι "DefaultController".

Ας δημιουργήσουμε μια κατηγορία οντοτήτων με το όνομα Contact.

δημόσια τάξη Επικοινωνία

    {

δημόσιο int Id {get; σειρά; }

δημόσια συμβολοσειρά FirstName {get; σειρά; }

δημόσια συμβολοσειρά LastName {get; σειρά; }

    }

Στη συνέχεια, προσθέστε την ακόλουθη μέθοδο στο DefaultController.

δημόσια CustomActionResult Get ()

        {

Επαφή επαφής = νέα επαφή ();

contact.Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

επιστρέψτε νέο CustomActionResult (HttpStatusCode.OK, επικοινωνία);

        }

Σημειώστε τη χρήση της κλάσης CustomActionResult κατά την επιστροφή δεδομένων από τη μέθοδο του ελεγκτή. Τώρα ας δημιουργήσουμε μια κλάση CustomActionResult μόνο για να διασφαλίσουμε ότι ο κώδικάς σας θα μεταγλωττιστεί - θα εφαρμόσουμε αυτήν την τάξη αργότερα.

δημόσια τάξη CustomActionResult: IHttpActionResult

    {

public Task ExecuteAsync (CancellationToken ακύρωσηToken)

        {

ρίξτε νέο NotImplementedException ();

        }

    }

Εργασία με ActionResults

Ο ελεγκτής API Ιστού σας μπορεί να επιστρέψει οποιονδήποτε από τους ακόλουθους τύπους τιμών:

  • HttpResponseMessage: σε αυτήν την περίπτωση το Web API σας θα μετατρέψει την τιμή επιστροφής σε αντικείμενο μηνύματος απόκρισης Http και θα την επιστρέψει.
  • IHttpActionResult: σε αυτήν την περίπτωση ο χρόνος εκτέλεσης του Web API μετατρέπει την τιμή επιστροφής σε αντικείμενο μηνύματος απόκρισης Http (μια παρουσία HttpResponseMessage δημιουργείται ασύγχρονα) εσωτερικά και την επιστρέφει. Η χρήση της διασύνδεσης IHttpActionResult (εισήχθη στο Web API 2) απλοποιεί τη δοκιμή μονάδας των ελεγκτών Web API σας και επίσης ολοκληρώνει τη δημιουργία ενός αντικειμένου HttpResponseMessage
  • άκυρο: σε αυτήν την περίπτωση, το Web API σας θα επέστρεφε μια κενή απόκριση Http με κωδικό κατάστασης 204.
  • Άλλοι τύποι: σε αυτήν την περίπτωση, το Web API σας θα εκμεταλλευόταν τον κατάλληλο μορφοποιητή πολυμέσων για σειριοποίηση και επιστροφή δεδομένων από τη μέθοδο ελεγκτή Web API με κωδικό κατάστασης απόκρισης 200

Το παρακάτω απόσπασμα κώδικα δείχνει τον τρόπο με τον οποίο μπορείτε να χρησιμοποιήσετε το HttpResponseMessage return από τη μέθοδο ελεγκτή API Ιστού.

[Διαδρομή ("επαφή")]

δημόσιο HttpResponseMessage Λήψη ()

{

HttpResponseMessage message = Request.CreateResponse (HttpStatusCode.OK, επικοινωνία);

μήνυμα επιστροφής;

}

Ας εφαρμόσουμε τώρα ένα αποτέλεσμα προσαρμοσμένης ενέργειας που θα χρησιμοποιήσουμε για την επιστροφή δεδομένων από το API Ιστού που δημιουργήσαμε.

Δημιουργία προσαρμοσμένου ActionResult

Για να δημιουργήσετε μια κλάση αποτελεσμάτων προσαρμοσμένης ενέργειας, το μόνο που χρειάζεται να κάνετε είναι να δημιουργήσετε μια κλάση που εφαρμόζει τη διεπαφή IActionResult και παρακάμπτει τη μέθοδο ExecuteAsync.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να χρησιμοποιήσετε το Generics για να δημιουργήσετε μια τάξη αποτελεσμάτων προσαρμοσμένης ενέργειας.

δημόσια τάξη CustomActionResult: IHttpActionResult

    {

ιδιωτικό System.Net.HttpStatusCode statusCode;

T δεδομένα;

δημόσιο CustomActionResult (System.Net.HttpStatusCode statusCode, T δεδομένα)

        {

this.statusCode = statusCode;

this.data = δεδομένα;

        }

    }

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να δημιουργήσετε το αντικείμενο απόκρισης, να το συμπληρώσετε με τα απαραίτητα δεδομένα και να το επιστρέψετε.

δημόσιο HttpResponseMessage CreateResponse (System.Net.HttpStatusCode statusCode, T data)

        {

HttpRequestMessage request = νέο HttpRequestMessage (); request.Properties.Add (System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, νέο HttpConfiguration ());

HttpResponseMessage απόκριση = request.CreateResponse (statusCode, data);

επιστροφή επιστροφής;

        }

Η μέθοδος ExecuteAsync καλεί τη μέθοδο CreateResponse και μεταβιβάζει τον κωδικό κατάστασης και τα δεδομένα σε αυτήν ως παράμετρο.

        δημόσια εργασία ExecuteAsync (CancellationToken ακύρωσηToken)

        {

επιστροφή Task.FromResult (CreateResponse (this.statusCode, this.data));

        }

Κατανάλωση του API Ιστού

Για να καταναλώσετε το Web API που μόλις δημιουργήσατε, μπορείτε να δημιουργήσετε μια εφαρμογή κονσόλας και, στη συνέχεια, να εισαγάγετε το πακέτο "WebApiContrib.Formatting.ProtoBuf" στο έργο σας μέσω NuGet.

Υποθέτοντας ότι έχετε δημιουργήσει τον πελάτη για να καταναλώσετε το Web API που εφαρμόσαμε νωρίτερα, εδώ είναι η λίστα κωδικών που δείχνει πώς μπορείτε να καταναλώσετε το Web Api.

static void Main (συμβολοσειρά [] args)

        {

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

HttpResponseMessage response = client.GetAsync ("api / Default"). Αποτέλεσμα;

εάν (απόκριση.IsSuccessStatusCode)

            {

Επαφή επαφής = απάντηση. Περιεχόμενο.ReadAsAsync (). Αποτέλεσμα;

Console.WriteLine ("Id =" + contact.Id + "Όνομα:" + contact.FirstName + "Επώνυμο:" + contact.LastName);

            }

αλλού

            {

Console.WriteLine ("{0} ({1})", (int) απόκριση.StatusCode, απόκριση.ReasonPhrase);

            }

Κονσόλα.ReadKey ();

        }

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