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

Εξερεύνηση δρομολόγησης στο Web API

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

Όταν δημιουργείτε ένα έργο Web API στο Visual Studio, θα παρατηρούσατε ότι δημιουργείται και ένα έργο MVC. Παρόμοια με το ASP.Net MVC, η διαμόρφωση δρομολόγησης σε ένα έργο Web API καλείται από το αρχείο Global.asax. Ένα έργο Web API αποθηκεύει τις πληροφορίες διαμόρφωσης στις κλάσεις RouteConfig και WebApiConfig - και τα δύο αυτά υπάρχουν στο φάκελο Application_Start. Παρόμοια με ένα έργο MVC θα παρατηρούσατε ένα αρχείο RouteConfig.cs που δημιουργήθηκε στο φάκελο App_Start στη λύση σας.

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

Με το ASP.Net 5 (θα κυκλοφορήσει σύντομα ως μέρος του Visual Studio 2015), υπάρχει ένα ενοποιημένο βασικό πλαίσιο - έχετε ένα ενιαίο πλαίσιο εξόδου, ένα πλαίσιο δέσμευσης ενός μοντέλου και έναν αγωγό ενός φίλτρου. Έχετε πλέον έναν ενοποιημένο πυρήνα για ASP.Net MVC, ASP.Net Web API και ASP.Net Web Pages. Έτσι, υπάρχει μόνο ένας τύπος ελεγκτή για τη διαχείριση αιτημάτων: είναι κοινό για τις εφαρμογές ASP.Net MVC, ASP.Net Web API και ASP.Net.

Το προεπιλεγμένο πρότυπο διαδρομής MVC μοιάζει με αυτό:

{ελεγκτής} / {action} / {id}

Αντίθετα, η προεπιλεγμένη διαδρομή API Ιστού μοιάζει με αυτήν:

api / {controller} / {id}

Η προεπιλεγμένη διαδρομή που δημιουργήθηκε κατά τη δημιουργία ενός νέου έργου Web API στο Visual Studio μοιάζει με αυτό:

δημόσια στατική τάξη WebApiConfig

{

Δημόσιο στατικό άκυρο Μητρώο (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

όνομα: "DefaultApi",

routeTemplate: "api / {controller} / {id}",

προεπιλογές: νέο {id = RouteParameter.Optional}

);

}

}

Σημειώστε πώς το προεπιλεγμένο δρομολόγιο προτίθεται από "api". Είναι καλή πρακτική να ορίζετε τις διαδρομές της εφαρμογής Web API σας προθέτοντάς τις με "api" για να τις κάνετε να ξεχωρίζουν από την τυπική διαδρομή MVC. Σε διαφορετική σημείωση, όταν κοιτάζετε την προεπιλεγμένη διαδρομή για ένα έργο Web API, δεν θα βλέπετε την παράμετρο διαδρομής "{action}" - ο χρόνος εκτέλεσης του API Ιστού αντιστοιχεί στις κατάλληλες ενέργειες με βάση το ρήμα HTTP του αιτήσεων.

Ωστόσο, μπορείτε να τροποποιήσετε τον ορισμό διαδρομής του API Ιστού για να συμπεριλάβετε μια παράμετρο "{action}". Το παρακάτω απόσπασμα κώδικα δείχνει πώς μοιάζει η τροποποιημένη κλάση WebApiConfig.

δημόσια στατική τάξη WebApiConfig

{

Δημόσιο στατικό άκυρο Μητρώο (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

όνομα: "DefaultApi",

routeTemplate: "api / {controller} / {action} / {id}",

προεπιλογές: νέο {id = RouteParameter.Optional}

);

}

}

Τώρα που έχετε ορίσει το "{action}" ως μέρος της διαδρομής, πρέπει να καθορίσετε την ενέργεια κατά την επίκληση της μεθόδου WebAPI. Εξετάστε την ακόλουθη διεύθυνση URL: // idgservice / author / 1

Σε αυτήν τη διεύθυνση URL, το idgservice είναι το όνομα του τομέα όπου φιλοξενήθηκε το WebAPI, οι συντάκτες είναι το όνομα του ελεγκτή και το 1 μεταβιβάζεται ως παράμετρος. Ωστόσο, αυτό δεν θα λειτουργούσε εάν έχετε ορίσει το "{action}" στον ορισμό της διαδρομής σας. Θα πρέπει να αναφέρετε ρητά το όνομα της ενέργειας όταν καλείτε το WebAPI σας σε αυτήν την περίπτωση. Ακολουθεί η σωστή διεύθυνση URL που περιλαμβάνει το όνομα της ενέργειας ως μέρος της διεύθυνσης URL: // idgservice / author / GetAuthorDetails /

Λάβετε υπόψη ότι το όνομα ενέργειας στην παραπάνω διεύθυνση URL είναι GetAuthorDetails και έχει αναφερθεί ως μέρος της τροποποιημένης διεύθυνσης URL.

Μπορείτε επίσης να καθορίσετε τη μέθοδο HTTP για μια ενέργεια χρησιμοποιώντας το χαρακτηριστικό HttpGet, HttpPut, HttpPost ή HttpDelete. Το απόσπασμα κώδικα που δίνεται παρακάτω δείχνει πώς μπορεί να επιτευχθεί:

δημόσια τάξη AuthorsController: ApiController

{

[HttpGet]

δημόσιος συγγραφέας GetAuthor (id) {}

}

Εάν θέλετε να επιτρέψετε πολλές μεθόδους HTTP για μια ενέργεια, μπορείτε να επωφεληθείτε από το χαρακτηριστικό AcceptVerbs όπως φαίνεται παρακάτω:

δημόσια τάξη ProductsController: ApiController

{

[AcceptVerbs ("GET", "HEAD")]

δημόσιος συγγραφέας GetAuthor (id) {}

}

Μπορείτε επίσης να παρακάμψετε την ενέργεια χρησιμοποιώντας το χαρακτηριστικό ActionName, όπως φαίνεται στο απόσπασμα κώδικα που δίνεται παρακάτω:

δημόσια τάξη AuthorsController: ApiController

{

[HttpGet]

[ActionName ("AuthorDetails")]

δημόσιος συγγραφέας GetAuthor (id) {}

}

Λάβετε υπόψη ότι μπορείτε επίσης να αποτρέψετε την επίκληση μιας μεθόδου ως ενέργειας, αξιοποιώντας το χαρακτηριστικό NonAction όπως φαίνεται παρακάτω.

δημόσια τάξη AuthorsController: ApiController

{

[HttpGet]

[Μη δράση]

δημόσια Boolean ValidateLogin (id) {}

}

Copyright el.verticalshadows.com 2022