Στο WebAPI, το σώμα αιτήματος (HttpContent) μπορεί να διαβαστεί μόνο μία φορά, να μην αποθηκευτεί προσωρινά και να διαβαστεί μόνο προς τα εμπρός.
Για παράδειγμα:
1. Διεύθυνση αιτήματος: /?id=123&name=bob
Μέθοδος από την πλευρά του διακομιστή: void Action(int id, όνομα συμβολοσειράς) // Όλες οι παράμετροι είναι απλοί τύποι, επομένως όλες θα προέρχονται από το url
2. Διεύθυνση αιτήματος: /?id=123&name=bob
Μέθοδος από την πλευρά του διακομιστή: void Action([FromUri] int id, [FromUri] string name) // Ίδιο με το παραπάνω
void Action([FromBody] όνομα συμβολοσειράς); Το χαρακτηριστικό [FormBody] εμφανίζει ότι ολόκληρο το σώμα διαβάζεται ως συμβολοσειρά ως όρισμα
3. Διεύθυνση αιτήματος: /?id=123
Ορισμός τάξης:
public class Πελάτης { // Ορίζεται ένας σύνθετος τύπος αντικειμένου δημόσια συμβολοσειρά Όνομα { get; σειρά; } public int Ηλικία { get; σειρά; }
}
Μέθοδος από την πλευρά του διακομιστή: void Action(int id, Customer c) // Το αναγνωριστικό παραμέτρου διαβάζεται από τη συμβολοσειρά ερωτήματος, η παράμετρος c είναι μια σύνθετη κλάση αντικειμένου πελάτη, που διαβάζεται από το σώμα μέσω του μορφοποιητή
Μέθοδος από την πλευρά του διακομιστή: void action(Πελάτης c1, Πελάτης c2) // Σφάλμα! Οι πολλαπλές παράμετροι είναι πολύπλοκοι τύποι και όλες προσπαθούν να διαβαστούν από ένα σώμα, το οποίο μπορεί να διαβαστεί μόνο μία φορά
Μέθοδος από την πλευρά του διακομιστή: void action([FromUri] Πελάτης c1, Πελάτης c2) // Ναι! Σε αντίθεση με την παραπάνω ενέργεια, ο σύνθετος τύπος C1 θα διαβαστεί από τη διεύθυνση URL και ο C2 θα διαβαστεί από το σώμα
4. Μέθοδος ModelBinder:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Υποδεικνύει ότι χρησιμοποιείται ένα συγκεκριμένο συνδετικό μοντέλο για την επίλυση της παραμέτρου
[ModelBinder(MyCustomBinder)] δημόσια κλάση SomeType { } // Εφαρμόστε αυτόν τον κανόνα σε όλες τις παραμέτρους τύπου SomeType δηλώνοντας το χαρακτηριστικό [ModelBidner(MyCustomBinder)] σε έναν συγκεκριμένο τύπο SomeType
void Action(SomeType c) // Δεδομένου ότι ο τύπος του c είναι SomeType, τα χαρακτηριστικά στο SomeType εφαρμόζονται για τον προσδιορισμό της δέσμευσης του μοντέλου
Περίληψη:
1. Οι προεπιλεγμένες απλές παράμετροι διαβιβάζονται μέσω παραμέτρων URL, με εξαιρέσεις:
1.1 Εάν η δρομολόγηση περιέχει την παράμετρο id, η παράμετρος id διέρχεται από τη δρομολόγηση.
1.2 Εάν η παράμετρος έχει επισημανθεί ως [FromBody], η παράμετρος μπορεί να είναι μια απλή παράμετρος και ο πελάτης μπορεί να τη μεταβιβάσει μέσω POST: $.ajax(url, '=value') ή $.ajax({url: url, δεδομένα: {'': 'value'}});
2. Οι προεπιλεγμένες σύνθετες παράμετροι (προσαρμοσμένες οντοτήτων) μεταβιβάζονται μέσω POST, με εξαιρέσεις:
2.1 Εάν η τιμή της παραμέτρου επισημαίνεται ως [FromUri], η παράμετρος μπορεί να είναι μια σύνθετη παράμετρος.
3. Μια παράμετρος με την ένδειξη [FromBody] επιτρέπεται να εμφανίζεται μόνο μία φορά, μια παράμετρος που επισημαίνεται ως [FromUri] μπορεί να εμφανιστεί πολλές φορές και, εάν η παράμετρος που επισημαίνεται ως [FromUri] είναι μια απλή παράμετρος, η ετικέτα μπορεί να αφαιρεθεί. |