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

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

[Διαδικτυακό API] Το WebAPI προσαρμόζει τη μορφή δεδομένων επιστροφής

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 30/11/2017 11:00:16 π.μ. | | | |
Πρόσφατα, όταν χρησιμοποιείτε το WebAPI, το πρόγραμμα περιήγησης έχει πρόσβαση στο WebAPI και η προεπιλογή είναι η μορφή XML, νομίζω ότι αυτή η μορφή δεδομένων που επιστρέφεται θα πρέπει να είναι προσαρμόσιμη από τον χρήστη, επιτρέποντας στον διακομιστή να επιστρέψει μορφή XML ή μορφή JSON, αντί για κώδικα διακομιστή για διαμόρφωση!



Αν και ο κώδικας διακομιστή μπορεί να ρυθμιστεί, δεν νομίζω ότι ήταν η αρχική πρόθεση του WebAPI.

1. Ποιον τύπο δεδομένων επιστρέφει το WebAPI από προεπιλογή, json ή xml;
2. Πώς να τροποποιήσετε τον τύπο δεδομένων επιστροφής του WebAPI
Χρησιμοποιώ το πρόγραμμα περιήγησης IE για να ζητήσω τα δεδομένα που επιστρέφονται να είναι σε μορφή JSON και η μορφή δεδομένων που επιστρέφεται από τον Firefox και το Chrome είναι XML και, στη συνέχεια, χρησιμοποιώ το HttpWebRequest για να ζητήσω η επιστροφή να είναι σε μορφή JSON, αναρωτήθηκα, γιατί είναι το ίδιο πρόγραμμα, το ίδιο αρχείο διαμόρφωσης, γιατί είναι διαφορετική η μορφή δεδομένων εξόδου, ακόμα κι αν η προεπιλεγμένη έξοδος json ή xml μπορεί να γίνει κατανοητή, γιατί υπάρχουν διαφορετικά προγράμματα περιήγησης, η μορφή εξόδου είναι διαφορετική, Μετά από λίγη έρευνα, τελικά κατάλαβα τον λόγο

Μετά από δοκιμή, διαπιστώθηκε ότι τα δεδομένα που επιστρέφονται με τη χρήση του προγράμματος περιήγησης IE είναι json, ενώ η χρήση του Firefox και του Chrome είναι xml και διαπιστώθηκε ότι ο IE δεν διαθέτει τον τύπο "application/xml" σε σύγκριση με τον Firefox και τον Chrome όταν εμφανίζονται αιτήματα http. Επομένως, η προεπιλογή είναι δεδομένα μορφής json, ενώ ο Firefox και ο Chrome στέλνουν αποδεκτούς τύπους xml, επομένως επιστρέφονται δεδομένα xml και ακολουθεί η κεφαλίδα αιτήματος των IE, Firefox και Chrome


Η επιλογή Αποδοχή εμφανίζεται μόνο στις Αιτήσεις

Τι σημαίνει: Ο τύπος πολυμέσων που είναι αποδεκτός από την πλευρά του προγράμματος περιήγησης


Για παράδειγμα, Αποδοχή: text/html σημαίνει ότι το πρόγραμμα περιήγησης μπορεί να αποδεχτεί τον τύπο της επιστροφής δεδομένων από τον διακομιστή ως κείμενο/html, το οποίο συνήθως αναφέρεται ως έγγραφα html

Εάν ο διακομιστής δεν μπορεί να επιστρέψει δεδομένα τύπου text/html, ο διακομιστής θα πρέπει να επιστρέψει ένα σφάλμα 406 (μη αποδεκτό)

Ο χαρακτήρας μπαλαντέρ * αντιπροσωπεύει οποιονδήποτε τύπο

Για παράδειγμα, Αποδοχή: */* σημαίνει ότι το πρόγραμμα περιήγησης μπορεί να χειριστεί όλους τους τύπους, (γενικά το πρόγραμμα περιήγησης το στέλνει στον διακομιστή)

Για παράδειγμα, Αποδοχή: κείμενο/* σημαίνει ότι όλες οι υποκλάσεις κειμένου είναι αποδεκτές

Το Accept μπορεί να υποστηρίξει πολλαπλούς τύπους διαχωρισμών

Για παράδειγμα, Αποδοχή: ήχος/*; q=0.2, το audio/basic σημαίνει ότι τα προγράμματα περιήγησης προτιμούν τους τύπους πολυμέσων ήχου/basic, αλλά αν δεν έχουν αυτόν τον τύπο, μπορούν να χρησιμοποιηθούν και άλλοι τύποι ήχου

Εδώ εμφανίζεται ένα q=0.2, το οποίο είναι μια τιμή που αντιπροσωπεύει τον βαθμό συσχέτισης και η προεπιλεγμένη τιμή είναι μία, διατεταγμένη από το μεγαλύτερο στο μικρότερο

Για παράδειγμα, Αποδοχή: κείμενο/απλό; q=0.5, κείμενο/html, κείμενο/x-dvi; q=0.8, κείμενο/x-c

Οι αποδεκτές προτεραιότητες τύπου είναι οι εξής

1) κείμενο/html κείμενο/x-c

2) κείμενο/x-dvi

3) κείμενο/απλό

q είναι μια τιμή μεταξύ 0-1, η προεπιλεγμένη τιμή του q είναι 1 και q=0 σημαίνει μη αποδεκτή



Τέλος, τα αποτελέσματα των δοκιμών:

πρόγραμμα περιήγησηςΕπιστροφή στη μορφοποίηση  Κεφαλίδα αποδοχής αιτήματος
δηλ.JSONκείμενο/html, εφαρμογή/xhtml+xml, */*
ΧρώμιοΧμλκείμενο/html,εφαρμογή/xhtml+xml,εφαρμογή/xml; q=0.9,εικόνα/webp,εικόνα/apng,*/*; q=0,8
Ο FirefoxΧμλκείμενο/html,εφαρμογή/xhtml+xml,εφαρμογή/xml; q=0,9,*/*; q=0,8,*/*



Συνεχίστε με τις ακόλουθες δοκιμές

1. Αποδοχή μόνο: application/json αποστέλλεται και το αποτέλεσμα επιστρέφεται json

2. Αποδοχή μόνο: αποστέλλεται application/xml και το αποτέλεσμα επιστρέφει xml

3. Αποστολή αποδοχής: application/xml και application/json ταυτόχρονα και το αποτέλεσμα επιστρέφει json

4. Αποστολή αποδοχής: application/json και application/xml ταυτόχρονα και το αποτέλεσμα επιστρέφει json

5. Τροποποιήστε την προτεραιότητα και στείλτε την εφαρμογή/xml ταυτόχρονα. q=1.0, εφαρμογή/json; q=0,9 και το αποτέλεσμα επέστρεψε xml

Από αυτό μπορεί να συναχθεί το συμπέρασμα:

Ο τύπος δεδομένων επιστροφής του WebAPI καθορίζεται από την αποδοχή της κεφαλίδας αιτήματος και ο προεπιλεγμένος τύπος επιστροφής είναι json
1. Εάν δεν υπάρχει ούτε εφαρμογή/json ούτε εφαρμογή/xml, επιστρέψτε τα δεδομένα json
2. Όταν είναι διαθέσιμη μόνο η εφαρμογή/json, επιστρέψτε τα δεδομένα json
3. Όταν είναι διαθέσιμη μόνο η εφαρμογή/xml, τα δεδομένα xml επιστρέφονται
4. Όταν υπάρχει application/json και application/json ταυτόχρονα, ο τύπος δεδομένων που επιστρέφεται είναι άσχετος με τη σειρά των δύο, εάν τα δύο έχουν την ίδια προτεραιότητα, επιστρέφεται json και εάν η προτεραιότητα είναι διαφορετική, επιστρέφεται ο τύπος με υψηλότερη προτεραιότητα



Αποδοχή κεφαλιούΤύπος επιστροφής
Εφαρμογή/JSONJSON
Εφαρμογή/XMLΧμλ
εφαρμογή/xml,εφαρμογή/jsonJSON
εφαρμογή/json,εφαρμογή/xmlJSON
εφαρμογή/xml; q=1.0, εφαρμογή/json; q = 1,0JSON
εφαρμογή/xml; q=0,9, εφαρμογή/json; q=0,9JSON
εφαρμογή/xml; q=1.0, εφαρμογή/json; q=0,9Χμλ
εφαρμογή/xml; q=0,9, εφαρμογή/json; q = 1,0JSON


Οπως φαίνεται παρακάτω:





Προηγούμενος:Η Python3 υλοποιεί οριζόντιους πίνακες διαμέρισης ταυτόχρονης πρόσβασης
Επόμενος:Το .Net MVC υλοποιεί μεγάλες δημοσκοπήσεις
Δημοσιεύτηκε στις 30/11/2017 11:06:08 π.μ. |
Είναι καταπληκτικό, βρήκα αυτή την κατάσταση πριν, αλλά δεν σκέφτηκα γιατί
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 30/11/2017 11:07:36 π.μ. |
QWERTYU Δημοσιεύτηκε στις 2017-11-30 11:06
Είναι καταπληκτικό, βρήκα αυτή την κατάσταση πριν, αλλά δεν σκέφτηκα γιατί

Συνιστάται να αποθαρρύνετε την επιστροφή της μορφής XML επειδή, σε ορισμένες περιπτώσεις, η επιστροφή της μορφής JSON είναι φυσιολογική και η επιστροφή της μορφής XML δημιουργεί μια εξαίρεση

Για παράδειγμα, εάν η τιμή επιστροφής είναι αντικείμενο, η μορφή JSON επιστροφής είναι κανονική και η μορφή XML επιστροφής θα αναφέρει ένα σφάλμα
Δημοσιεύτηκε στις 25/4/2018 8:50:44 π.μ. |
Η διάλεξη είναι πολύ λεπτομερής, και υπάρχουν σημεία γνώσης, ευχαριστώ, έχει συλλεχθεί
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com