Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 21930|Απάντηση: 1

[Διαδικτυακό API] web api Ορισμός ιδιότητας δρομολόγησης

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 28/4/2018 10:37:11 π.μ. | | | |
ASP.NET δρομολόγηση Web API, με απλά λόγια, είναι η διαδικασία αντιστοίχισης αιτημάτων πελατών σε αντίστοιχες ενέργειες. Στο άρθρο "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings", βίωσα τη ρύθμιση διαδρομών μέσω προτύπων, συμβάσεων και μεθόδων HTTP και το πλεονέκτημα αυτής της προσέγγισης είναι ότι τα πρότυπα δρομολόγησης τοποθετούνται ομοιόμορφα στην κλάση WebApiConfig κάτω από το φάκελο App_Start, κάτι που είναι βολικό για διαχείριση, αλλά το μειονέκτημα είναι ότι δεν είναι αρκετά ευέλικτο.


Το REST αντιμετωπίζει τα πάντα ως πόρο και μερικές φορές, ένας πόρος με θυγατρικούς πόρους, όπως Πελάτης και Παραγγελίες, μπορεί να θέλει να εισαγάγει ένα αίτημα όπως customers/1/orders, αλλά είναι δύσκολο να επιτευχθεί αυτή η διαδρομή μόνο με σύμβαση. Στην πραγματικότητα, ASP.NET Web API μας παρέχει μια λειτουργία Route, η οποία μπορεί να συνδεθεί απευθείας με το Action, η οποία είναι πολύ ευέλικτη και διαισθητική στη χρήση.

Ας δούμε πώς να χρησιμοποιήσετε τη δυνατότητα Route στο ASP.NET MVC4.

Να επιτρέπεται το χαρακτηριστικό δρομολόγησης


Πρώτα πρέπει να το ρυθμίσετε στο WebApiConfig.



Η παραπάνω μέθοδος MapHttpAttributeRoutes είναι διαθέσιμη μόνο σε νεότερες εκδόσεις του ASP.NET Web APIΕάν η έκδοσή σας είναι σχετικά χαμηλή, μπορείτε να απεγκαταστήσετε την παλιά έκδοση και να εγκαταστήσετε την πιο πρόσφατη έκδοση μέσω της κονσόλας NuGet Package Manager.


Στη συνέχεια, στο Global.asax, πρέπει να σχολιάσετε τον αρχικό τρόπο εγγραφής του WebApiConfig και να υιοθετήσετε μια νέα μέθοδο, ως εξής:

Προς το παρόν, η εκτέλεση του έργου ενδέχεται να αναφέρει το ακόλουθο σφάλμα:

Αυτό συμβαίνει επειδή κατά τη λήψη της πιο πρόσφατης έκδοσης του ASP.NET Web API, κατέβασα επίσης την πιο πρόσφατη έκδοση του icrosoft. AspNet.WebApi.HelpPage。 Μπορείτε να απεγκαταστήσετε την πιο πρόσφατη έκδοση του HelpPage και να κάνετε λήψη της παλαιότερης έκδοσης.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Χρήση της ιδιότητας Δρομολόγηση

Δημιουργήστε μια κλάση Cusomter.


Δημιουργήστε μια κλάση Order.

Δημιουργήστε μια κλάση Database για να λάβετε τη συλλογή Order.



Δημιουργήστε έναν κενό ελεγκτή API γραμμένο ως εξής:


Πληκτρολογήστε τα ακόλουθα στο πρόγραμμα περιήγησής σας:

Εάν χρησιμοποιείτε ASP.NET MVC4 για ανάπτυξη, ενδέχεται να λάβετε το ακόλουθο σφάλμα όταν το πρόγραμμα εκτελείται για πρώτη φορά:

[ένα] Το System.Web.WebPages.Razor.Configuration.HostSection δεν μπορεί να μεταδοθεί στο [B]System.Web.WebPages.Razor.Configuration.HostSection. Ο τύπος Α προέρχεται από το "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (στο "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ στο πλαίσιο "Προεπιλογή") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Ο τύπος Β προέρχεται από το "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (στο πλαίσιο "Προεπιλογή" στο "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Προσωρινά αρχεία ASP.NET/vs/feb7ce97/a525d58a/asse


Αυτό συμβαίνει επειδή η πιο πρόσφατη έκδοση του Razor χρησιμοποιείται κατά τη λήψη της πιο πρόσφατης έκδοσης του ASP.NET Web API. Πρέπει να διαμορφώσετε την ακόλουθη διαμόρφωση στον ριζικό κατάλογο του Web.config:


Χρησιμοποιήστε τη λειτουργία RoutePrefix


Εάν θέλετε να προσθέσετε πρόθεμα σε όλες τις ενέργειες σε έναν ελεγκτή API, μπορείτε να τοποθετήσετε τη δυνατότητα RoutePrefix στον ελεγκτή API.

Για παράδειγμα, θέλουμε να είναι σε μορφή όπως αυτή: http://localhost/api/customers/1/orders


Τροποποιήστε το OrdersController με αυτόν τον τρόπο.


Μπορείτε επίσης να χρησιμοποιήσετε το ~ στη λειτουργία Διαδρομή για να παρακάμψετε τους κανόνες προθέματος της Ενέργειας.



Το πρόθεμα που ορίζεται από τη δυνατότητα RoutePrefix μπορεί επίσης να έχει μεταβλητές παραμέτρων:


Περιορισμοί δρομολόγησης

Μπορείτε να περιορίσετε τις μεταβλητές παραμέτρων σε μια δρομολόγηση με το "{parameter variable name: constraint}".


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

ASP.NET Οι ενσωματωμένοι περιορισμοί του Web API περιλαμβάνουν:

{x:alpha} περιορίζει τα κεφαλαία και πεζά γράμματα
{x:bool}
{x:ημερομηνία/ώρα}
{x:δεκαδικό}
{x:διπλό}
{x:float}
{x:guid}
{x:int}
{x:μήκος(6)}
{x:length(1,20)} περιορίζει το εύρος μήκους
{x:μακρύ}
{x:μέγιστο μήκος(10)}
{x:min(10)}
{x:εύρος(10,50)}
{x:regex(regex)}


Μπορείτε να ορίσετε πολλούς περιορισμούς για μια μεταβλητή παραμέτρου ταυτόχρονα:

Εφαρμόστε τη διασύνδεση IHttpRouteConstraint για να προσαρμόσετε τους κανόνες περιορισμών. Εφαρμόστε έναν περιορισμό που δεν μπορεί να είναι 0.


Καταχωρίστε έναν προσαρμοσμένο περιορισμό στο WebApiConfig στον φάκελο App_Start.


Χρησιμοποιήστε προσαρμοσμένους περιορισμούς.


Προαιρετικές παράμετροι και οι προεπιλεγμένες τιμές τους

Εάν μια μεταβλητή παραμέτρου δρομολόγησης είναι προαιρετική, πρέπει επίσης να δοθεί στην παράμετρο μια προεπιλεγμένη τιμή.


Προσθέστε ? μετά τον περιορισμό για να υποδείξετε προαιρετικό και ορίστε την προεπιλεγμένη τιμή για το id στις παραμέτρους της μεθόδου.

Ορισμός ονόματος για τη διαδρομή



Προτεραιότητα δρομολόγησης

Η προτεραιότητα δρομολόγησης που ορίζεται από την ιδιότητα Δρομολόγηση καθορίζεται με βάση τις συμβάσεις και την ιδιότητα RouteOrder.

Οι συμβάσεις είναι:

1. Μεταβλητές στατικού τμήματος
2. Κατακερματισμός μεταβλητών με περιορισμούς
3. Κατακερματισμός μεταβλητών χωρίς περιορισμούς
4. Μεταβλητή τμήματος μπαλαντέρ με περιορισμούς
5. Απεριόριστες μεταβλητές τμημάτων μπαλαντέρ

Η προεπιλεγμένη τιμή της ιδιότητας RouteOrder είναι 0 και όσο μικρότερη είναι η τιμή της ιδιότητας, τόσο υψηλότερη είναι.


Παραπάνω, η σειρά προτεραιότητας για τη δρομολόγηση είναι:

παραγγελιών/λεπτομερειών μεταβλητή στατικού τμήματος, η τιμή της ιδιότητας RouteOrder είναι 0
orders/{id} με περιορισμένες μεταβλητές τμήματος με τιμή 0 στην ιδιότητα RouteOrder
orders/{customerName} είναι μια μεταβλητή τμήματος χωρίς περιορισμούς και η τιμή της ιδιότητας RouteOrder είναι 0
orders/{*date} είναι μια μεταβλητή τμήματος μπαλαντέρ με τιμή 0 στην ιδιότητα RouteOrder
παραγγελίες/εκκρεμείς τιμές ιδιότητας RouteOrder 1






Προηγούμενος:Κρατήστε αρχείο με το τι μπορεί να πληρωθεί με πιστωτική κάρτα
Επόμενος:Δεν είναι δυνατή η παροχή διεργασίας για ένα ADO.NET με το σταθερό όνομα "MySql.Data.MySqlClient"...
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com