Używam rozszerzenia Postman Chrome do testowania usługi internetowej.
Dostępne są trzy opcje wprowadzania danych.
Sądzę, że raw
jest to wysyłanie JSON.
Jaka jest różnica między pozostałymi dwoma form-data
i x-www-form-urlencoded
?
forms
web-services
rest
postman
Rohan
źródło
źródło
binary
.Odpowiedzi:
Są to różne typy zawartości formularza zdefiniowane przez W3C. Jeśli chcesz wysyłać proste dane tekstowe / dane ASCII, zadziała x-www-form-urlencoded . To jest domyślne.
Ale jeśli musisz wysłać tekst inny niż ASCII lub duże dane binarne, dane formularza są do tego przeznaczone.
Możesz użyć Raw, jeśli chcesz wysłać zwykły tekst, JSON lub dowolny inny ciąg. Jak sama nazwa wskazuje, Postman wysyła nieprzetworzone dane ciągu bez modyfikacji. Rodzaj przesyłanych danych można ustawić za pomocą nagłówka typu zawartości z menu rozwijanego.
Plik binarny może być używany, gdy chcesz dołączyć dane nietekstowe do żądania, np. Plik wideo / audio, obrazy lub inny plik danych binarnych.
Więcej informacji można znaleźć pod tym linkiem: Formularze w dokumentach HTML
źródło
To wyjaśnia lepiej: dokumenty listonosza
AKTUALIZACJA
Jak wskazał VKK , specyfikacja WHATWG mówi, że urlencoded jest domyślnym typem kodowania formularzy.
źródło
Content-Type: application/json
nagłówkiem; i nieprzetworzone dane wprowadzone jako Json jak{foo: bar}
z tym samymContent-Type: application/json
nagłówkiem?multipart / form-data
Uwaga. Proszę zapoznać się z RFC2388, aby uzyskać dodatkowe informacje na temat przesyłania plików, w tym problemów ze zgodnością wsteczną, związku między „danymi wieloczęściowymi / formularzem” a innymi typami treści, problemami z wydajnością itp.
Informacje na temat problemów związanych z bezpieczeństwem formularzy można znaleźć w dodatku.
Typ zawartości „application / x-www-form-urlencoded” jest nieefektywny w przypadku wysyłania dużych ilości danych binarnych lub tekstu zawierającego znaki spoza ASCII. Do przesyłania formularzy zawierających pliki, dane inne niż ASCII i dane binarne należy używać typu treści „multipart / form-data”.
Typ zawartości „multipart / form-data” jest zgodny z regułami wszystkich wieloczęściowych strumieni danych MIME zgodnie z RFC2045 . Definicja „danych wieloczęściowych / formularzy” jest dostępna w rejestrze [IANA].
Komunikat „multipart / form-data” zawiera serię części, z których każda reprezentuje udaną kontrolę. Części są wysyłane do agenta przetwarzania w tej samej kolejności, w której odpowiednie formanty pojawiają się w strumieniu dokumentów. Granice części nie powinny występować w żadnym z danych; sposób, w jaki to się odbywa, nie wchodzi w zakres niniejszej specyfikacji.
Podobnie jak w przypadku wszystkich wieloczęściowych typów MIME, każda część ma opcjonalny nagłówek „Content-Type”, który domyślnie ma wartość „text / plain”. Programy klienckie powinny dostarczyć nagłówek „Content-Type” wraz z parametrem „charset”.
application / x-www-form-urlencoded
To jest domyślny typ zawartości. Formularze przesłane z tym typem treści muszą być zakodowane w następujący sposób:
Nazwy i wartości kontrolne są zmieniane. Znaki spacji są zastępowane przez
+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
% HH ', znak procentu i dwie cyfry szesnastkowe reprezentujące kod ASCII znaku. Podziały linii są reprezentowane jako pary „CR LF” (tj.%0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by
= = I pary nazwa / wartość są oddzielone od siebie przez „&”.application/x-www-form-urlencoded
treść wiadomości HTTP wysyłanej do serwera to zasadniczo jeden gigantyczny ciąg zapytania - pary nazwa / wartość są oddzielone znakiem ampersand (&), a nazwy są oddzielone od wartości symbolem równości (=). Przykładem tego może być:Typ zawartości „application / x-www-form-urlencoded” jest nieefektywny w przypadku wysyłania dużych ilości danych binarnych lub tekstu zawierającego znaki spoza ASCII. Do przesyłania formularzy zawierających pliki, dane inne niż ASCII i dane binarne należy używać typu treści „multipart / form-data”.
źródło
Oto kilka dodatkowych przykładów, aby zobaczyć nieprzetworzony tekst, który Postman przekazuje w żądaniu. Możesz to zobaczyć, otwierając konsolę Listonosza:
tworzyć dane
nagłówek
Ciało
x-www-form-urlencoded
nagłówek
Ciało
Surowy tekst / zwykły
nagłówek
Ciało
Raw Json
nagłówek
Ciało
źródło