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
?
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
?
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
To wyjaśnia lepiej: dokumenty listonosza
Żądaj treści
Podczas konstruowania żądań miałbyś do czynienia z edytorem treści żądania. Listonosz umożliwia wysyłanie niemal każdego żądania HTTP (jeśli nie możesz czegoś wysłać, daj nam znać!). Edytor treści jest podzielony na 4 obszary i ma różne elementy sterujące w zależności od typu ciała.
tworzyć dane
multipart / form-data to domyślne kodowanie używane przez formularz internetowy do przesyłania danych.To symuluje wypełnienie formularza na stronie internetowej i przesłanie go. Edytor danych formularzy pozwala ustawić pary klucz / wartość (za pomocą edytora klucz-wartość) dla danych. Możesz także dołączyć pliki do klucza. Należy pamiętać, że z powodu ograniczeń specyfikacji HTML5 pliki nie są przechowywane w historii ani kolekcjach. Będziesz musiał wybrać plik ponownie w momencie wysyłania żądania.urlencoded
To kodowanie jest takie samo, jak stosowane w parametrach URL. Wystarczy wprowadzić pary klucz / wartość, a Postman poprawnie zakoduje klucze i wartości. Pamiętaj, że nie można przesyłać plików w tym trybie kodowania. Może istnieć pewne zamieszanie między danymi formularza a kodem URL, więc najpierw sprawdź interfejs API.
surowy
Surowe żądanie może zawierać wszystko. Listonosz nie dotyka ciągu wprowadzonego w edytorze raw, z wyjątkiem zamiany zmiennych środowiskowych. Cokolwiek umieścisz w polu tekstowym, zostanie wysłane z żądaniem. Edytor raw pozwala ustawić typ formatowania wraz z poprawnym nagłówkiem, który należy wysłać wraz z surowym ciałem. Możesz także ustawić nagłówek Content-Type ręcznie. Zwykle wysyłasz tutaj dane XML lub JSON.
dwójkowy
dane binarne pozwalają wysyłać rzeczy, których nie można wprowadzić w Listonoszu. Na przykład pliki obrazów, audio lub wideo. Możesz również wysyłać pliki tekstowe. Jak wspomniano wcześniej w sekcji danych formularza, musisz ponownie dołączyć plik, jeśli ładujesz żądanie poprzez historię lub kolekcję.
AKTUALIZACJA
Jak wskazał VKK , specyfikacja WHATWG mówi, że urlencoded jest domyślnym typem kodowania formularzy.
Niepoprawną wartością domyślną dla tych atrybutów jest stan application / x-www-form-urlencoded. Brakującą wartością domyślną dla atrybutu enctype jest również stan application / x-www-form-urlencoded.
Content-Type: application/json
nagłówkiem; i nieprzetworzone dane wprowadzone jako Json jak {foo: bar}
z tym samym Content-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ć:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
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”.
Oto kilka dodatkowych przykładów, aby zobaczyć nieprzetworzony tekst, który Postman przekazuje w żądaniu. Możesz to zobaczyć, otwierając konsolę Listonosza:
nagłówek
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
Ciało
key1=value1key2=value2
nagłówek
Content-Type: application/x-www-form-urlencoded
Ciało
key1=value1&key2=value2
nagłówek
Content-Type: text/plain
Ciało
This is some text.
nagłówek
Content-Type: application/json
Ciało
{"key1":"value1","key2":"value2"}
binary
.