Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24777|Odpowiedź: 3

[WebAPI] WebAPI dostosowuje format danych zwrotnych

[Skopiuj link]
Opublikowano 30.11.2017 11:00:16 | | | |
Ostatnio, korzystając z WebAPI, przeglądarka korzysta z WebAPI, a domyślnie jest to format XML. Myślę, że ten zwrócony format danych powinien być konfigurowalny przez użytkownika, pozwalając serwerowi zwracać format XML lub JSON, zamiast kodu serwera do konfiguracji!



Chociaż kod serwera można konfigurować, nie sądzę, żeby to był pierwotny zamysł WebAPI.

1. Jaki typ danych WebAPI zwraca domyślnie, json czy xml?
2. Jak zmodyfikować typ danych zwrotnych WebAPI
Używam przeglądarki IE, aby poprosić, by dane zwracane były w formacie JSON, a format danych zwracany przez Firefox i Chrome to XML, a potem używam HttpWebRequest, aby poprosić, by zwrot był w formacie JSON. Zastanawiałem się, dlaczego ten sam program, ten sam plik konfiguracyjny, dlaczego format danych wyjściowych jest inny, nawet jeśli domyślnie wyjść json lub xml jest zrozumiałe, dlaczego są różne przeglądarki, a format wyjściowy jest inny. Po pewnych poszukiwaniach w końcu odkryłem powód

Po testach stwierdzono, że dane zwracane przez przeglądarkę IE to json, podczas gdy w Firefoxie i Chrome to xml, a IE nie ma typu "application/xml" w porównaniu do Firefoxa i Chrome podczas żądań http. Domyślnie dane w formacie json, podczas gdy Firefox i Chrome wysyłają akceptowalne typy xml, więc dane xml są zwracane, a następuje nagłówek żądania IE, Firefox i Chrome


Akceptuj pojawia się tylko w Requestach

Co to oznacza: Rodzaj mediów akceptowalnych po stronie przeglądarki


Na przykład Accept: text/html oznacza, że przeglądarka może zaakceptować typ postbacku z serwera jako tekst/html, co jest powszechnie określane jako dokumenty html

Jeśli serwer nie może zwrócić danych typu tekst/html, powinien zwrócić błąd 406 (nieakceptowalny)

Dzika karta * oznacza dowolny typ

Na przykład Accept: */* oznacza, że przeglądarka obsługuje wszystkie typy (zazwyczaj przeglądarka wysyła to do serwera)

Na przykład Accept: text/* oznacza, że wszystkie podklasy tekstu są akceptowalne

Accept może wspierać wiele typów separacji

Na przykład, Zaakceptuj: audio/*; q=0.2, audio/basic oznacza, że przeglądarki preferują typy audio/basic media, ale jeśli nie mają tego typu, można też używać innych typów audio

Tutaj pojawia się q=0,2, która jest wartością reprezentującą stopień powiązania, a domyślną wartością jest jeden, ułożona od największego do najmniejszego

Na przykład, Akceptuj: tekst/gładki; q=0,5, tekst/html, tekst/x-dvi; q=0,8, tekst/x-c

Akceptowalne priorytety typów są następujące

1) tekst/html tekst/x-c

2) tekst/x-dvi

3) tekst/gładka

q to wartość między 0 a 1, domyślna wartość q to 1, a q=0 oznacza nieakceptowalną



Na koniec wyniki testu:

PrzeglądarkaPowrót do formatowania  Nagłówek zaakceptuj żądanie
iejsontekst/html, application/xhtml+xml, */*
Chromexmltext/html, application/xhtml+xml, application/xml; q=0.9,image/webp,image/apng,*/*; q=0,8
Firefoxxmltext/html, application/xhtml+xml, application/xml; q=0,9,*/*; q=0,8,*/*



Kontynuuj następujące testy

1. Wysyłane jest tylko akceptowanie: application/json, a wynik zwracany jest json

2. Wysyłane jest tylko Accept:application/xml, a wynik zwraca xml

3. Send accept: application/xml i application/json jednocześnie, a wynik zwraca json

4. Wyślij jednocześnie accept:application/json i application/xml, a wynik zwraca json

5. Zmodyfikuj priorytet i wysyłaj aplikację/xml jednocześnie. q=1.0,application/json; q=0.9, a wynik zwracał xml

Z tego można wywnioskować:

Typ danych return WebAPI jest określany przez akceptację nagłówka żądania, a domyślnym typem return jest json
1. Jeśli nie istnieje ani application/json, ani application/xml, zwróć dane json
2. Gdy dostępna jest tylko aplikacja/json, zwróć dane json
3. Gdy dostępne jest tylko application/xml, zwracane są dane xml
4. Gdy aplikacja/json i aplikacja/json występują jednocześnie, zwrócony typ danych nie ma znaczenia dla kolejności tych dwóch; jeśli oba mają ten sam priorytet, zwraca się json, a jeśli priorytet jest inny, zwracany jest typ o wyższym priorytecie



Przyjmuj głowęTyp zwrotu
application/jsonjson
application/xmlxml
application/xml,application/jsonjson
application/json,application/xmljson
application/xml; q=1.0,application/json; q=1.0json
application/xml; q=0,9,application/json; q=0,9json
application/xml; q=1.0,application/json; q=0,9xml
application/xml; q=0,9,application/json; q=1.0json


Jak pokazano poniżej:





Poprzedni:python3 implementuje poziome tablice podziału z dostępem współbieżnym
Następny:.Net MVC implementuje długie pollowanie
Opublikowano 30.11.2017 11:06:08 |
To niesamowite, wcześniej miałem taką sytuację, ale nie zastanawiałem się dlaczego
 Ziemianin| Opublikowano 30.11.2017 11:07:36 |
QWERTYU Opublikowano 30.11.2017, 11:06
To niesamowite, wcześniej miałem taką sytuację, ale nie zastanawiałem się dlaczego

Zaleca się zniechęcanie do zwracania formatu XML, ponieważ w niektórych przypadkach przywrócenie formatu JSON jest normalne, a zwrot formatu XML powoduje wyjątek

Na przykład, jeśli wartość zwrotu to obiekt, format JSON z powrotem jest normalny, a format XML zwracający zgłosi błąd
Opublikowano 25.04.2018 08:50:44 |
Wykład jest bardzo szczegółowy, a także zawiera punkty wiedzy, dziękuję, zostały zebrane
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com