Jaka jest różnica między HTTP GET a HTTP POST?
GET vs. POST
Ściśle mówiąc, różnica między GET i POST polega na sposobie przenoszenia aplikacji. Informacje w GET są przesyłane w adresie URL. Jeśli kiedykolwiek widziałeś adres URL ze znakami zapytania i symbolami związkowymi, szukałeś żądania GET: example.com/request.php?var1=foo&var2=bar to ciąg GET, który koduje zmienną "var1" jako "foo" i zmienna "var2" jako "bar". Informacja POST jest zawarta w treści żądania i nie jest widoczna w ciągu URL (a zatem nie jest widoczna dla użytkownika).
Formalne wytyczne
Formalnie, wytyczne HTML mówią, że GET powinien być używany dla "idempotentnych" żądań lub żądań, które niczego nie zmieniają. Na przykład wyobraź sobie stronę internetową, która zwraca lokalną pogodę: "example.com/weather.php?zipcode=12345". Akt wielokrotnego przedstawiania tego wniosku niczego nie zmienia. Test POST powinien być stosowany dla aplikacji, które nie są bezskuteczne. Załóżmy na przykład, że dokonujesz zakupu za pomocą karty kredytowej. Przedstawianie tego wniosku w kółko może doprowadzić do dość dużych zmian. Ponowne przesłanie żądania POST ma konsekwencje (nawet jeśli są one niewielkie), przeglądarki internetowe zazwyczaj wyświetlają żądanie, aby potwierdzić, że naprawdę chcą ponownie przesłać formularz zapytania.
Zalety GET
GET ma wiele zalet w porównaniu z POST. Ponieważ GET jest zakodowany jako część adresu URL, możesz wyciąć i wkleić adres URL i udostępnić go innym osobom. Żądania GET można również oznaczyć. Jeśli okresowo sprawdzasz godzinę, możesz dodać "example.com/weather.php?zipcode=12345" do paska "Ulubione" w przeglądarce, więc po kliknięciu tego linku automatycznie załadujesz swoją niestandardową stronę pogody. Ponieważ żądania GET są widoczne (i edytowalne) przez użytkownika, mogą być również pirackie. Na przykład, jeśli serwis pogodowy nie oferuje oczywistego sposobu zmiany lokalizacji zapytania o pogodę, możesz ręcznie zmienić "12345" na "99762", aby zobaczyć pogodę w Nome na Alasce zamiast pogody w Schenectady.
Kiedy używać testu POST
Nawet w sytuacjach, które są idempotentne, POST ma sporadyczne, jasne zastosowania. Niektóre z nich opierają się na bezpieczeństwie lub legalności. Zmienne GET są przesyłane "w oczywisty sposób", ponieważ nie chcesz wysyłać informacji o kartach kredytowych, numerach ubezpieczenia społecznego, hasłach ani poufnych danych użytkownika za pośrednictwem GET. Ponieważ dane POST stają się ciemniejsze, jest to lepsze rozwiązanie w takich sytuacjach. POST jest również używany do przesyłania dużych ilości danych, nawet jeśli dane nie są poufne. Technicznie, adresy URL (a zatem zmienne GET) mogą mieć nieograniczoną długość. Ponieważ jednak wiele przeglądarek ogranicza ilość miejsca na adres URL, GET jest zazwyczaj uznawany za odpowiedni tylko dla stosunkowo krótkich żądań.