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

Άποψη: 27609|Απάντηση: 3

[Διαδικτυακό API] Το WebAPI δεν μπορεί να συνδέσει πολλές παραμέτρους (SB και SB1) στο περιεχόμενο του αιτήματος

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 16/8/2016 1:52:38 μ.μ. | | | |



Στο 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] είναι μια απλή παράμετρος, η ετικέτα μπορεί να αφαιρεθεί.




Προηγούμενος:.NET Oracle μέθοδος ερωτήματος πολλαπλών πινάκων, μια ηλίθια μέθοδος.
Επόμενος:Η C# χρησιμοποιεί αντανάκλαση για να προσδιορίσει εάν έχει εκχωρηθεί μια ιδιότητα
Δημοσιεύτηκε στις 16/8/2016 3:21:29 μ.μ. |
Το ModelBinder θα πρέπει να έχει μια κλάση χαρακτηριστικών για το ModelBinderAttribute

Παρόμοια με τα φίλτρα
Δημοσιεύτηκε στις 16/8/2016 3:21:44 μ.μ. |
Ελάτε να επισκεφθείτε κάθε μέρα
Δημοσιεύτηκε στις 16/8/2016 3:22:00 μ.μ. |
Δώσε μου λίγο κύρος
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com