Jak działają strony i aplikacje
1 godz. 24 min · Biznes i Automatyzacje
Grzegorz RógIdea ArchitectCzy ja naprawdę muszę to wiedzieć? Czy to ważne, co dzieje się po wpisaniu adresu w przeglądarce, jak on jest skonstruowany i co zawiera? Wbrew pozorom - bardzo! Wiedza o tym, jak przeglądarka interpretuje to, co do niej wpisujemy przyda Ci się w wielu aspektach, nie tylko w programowaniu. Dzięki temu zrozumiesz jak serwer wymienia informacje z przeglądarką, jak działają UTMy w marketingowych kampaniach, czy wyszukiwarka, z której możesz przechwycić informacje w Analytics. Poznasz też kilka pojęć związanych z konsolą i parę przydatnych komend.
Porozmawiamy o tym, jak komunikować się efektywnie z serwerem, jakie są typy zapytań i jak możemy je egzekwować. Przy okazji poznasz aplikację Postman, z której będziesz mógł wygodnie wysyłać zapytania do serwera i przeglądać odpowiedzi. Jest to program, bez którego współczesny web development byłby bardzo utrudniony a komunikacja z back-endem dużo trudniejsza w implementacji.
Jak są zapisywane dane sesji, jakie dane przechowuje przeglądarka i po co? Odpowiedzi na te pytania pomogą Ci uniknąć frustracji w przypadku, gdy dane zostaną niepotrzebnie scache'owane ale także dowiedzieć się, jak zoptymalizować zasoby na stronie, które mogą być serwowane szybciej dla użytkownika. Zobaczysz, jak wygląda proces tworzenia ciasteczek, poznasz pojęcia jak Session Storage i Local Storage, to wszystko na kilku praktycznych przykładach.
W kursie przyjrzymy się szczegółowo działaniu API, poznasz podstawowe koncepcje, które stoją za najbardziej popularną metodą komunikacji z back-endem w nowoczesnych aplikacjach. Pomówimy o formacie JSON, będziemy też wysyłać zapytania do API takich aplikacji jak Twitter czy Google. W ten sposób dowiesz się, jak działają mechanizmy, które pozwolą Ci zintegrować się z najpopularniejszymi narzędziami w sieci!
Z kursem powinien zapoznać się z nim każdy, kto planuje tworzyć strony internetowe i chce rozwijać swoją karierę w ścieżkach webdevelopmentu. Jest to podstawowy materiał, który co prawda nie wchodzi w szczegóły jak sama konstrukcja API czy tworznie Rest API, ale jest uniwersalnym fundamentem wiedzy do różnych ścieżek. Przyda się też twórcom i właścicielom internetowych projektów, którym pozwoli lepiej zrozumieć mechanizmy działające pod maską webowych stron i aplikacji po to, aby je rozwijać czy korzystać z automatyzacji.
Cześć, witaj w kolejnej lekcji.
Wiesz już naprawdę sporo o protokole HTTP, czyli o tym, jak rozmawia ze sobą
serwer i klient, czyli nasza przeglądarka.
Wiesz jak jest skonstruowane zapytanie, które idzie od klienta i jak jest
skonstruowana odpowiedź, która wraca od serwera.
Mówiliśmy też o tym, jak tworzyć parametry, jakie są różne metody,
no i w końcu mówiliśmy też o tych najważniejszych
formatach, w postaci których możemy przekazywać dane w jedną i w drugą stronę.
Chciałbym, żebyś zapamiętał, że HTTP jest protokołem, który możemy nazwać bezstanowym.
Co to ogólnie oznacza?
To znaczy, że tak jak wysyłaliśmy w terminalu zapytanie
jedno po drugim, tak naprawdę te zapytania w żaden sposób nie nawiązują do siebie.
Czyli my nie możemy w kolejnym zapytaniu
nawiązać do tego wyniku, który otrzymaliśmy wcześniej.
Po prostu wysyłamy zapytanie, dostajemy odpowiedź i HTTP
można powiedzieć, że ma dosyć krótką
pamięć, po prostu zapomina te poprzednie rzeczy, które robiliśmy.
Rozwiązaniem takiego problemu jest
oczywiście to, że takie zapytanie, które idzie do serwera
może zostać przez serwer zinterpretowane tak, że bierze sobie treść i np. wstawia je i
zapamiętuje w bazie danych, czyli w takim można powiedzieć Excelu na sterydach,
który działa na serwerze, więc te dane są tam magazynowane i takie np.
wrażliwe dane polegające na tym, że jeśli użytkownik się zarejestruje w naszym serwisie
i podaje jakiś login i hasło czy imię i nazwisko na pewno będą zapisane w tej
bazie danych na serwerze, żeby na pewno nie zginęły i były bezpieczne.
Ale drugim rozwiązaniem tej sytuacji jest również zapisywanie danych po stronie
klienta, czyli na moim dysku twardym i przeglądarka potrafi to zrobić.
Natomiast oczywiście są to dane niewrażliwe,
ponieważ one za każdym razem mogą zostać wyczyszczone z mojego dysku.
Już na pewno wiesz o czym mówię.
Są to w dużej mierze pliki cookies.
Takim nowym odpowiednikiem cookies, czyli
ciasteczek jest Local Storage w specyfikacji HTML5, który
po prostu potrafi zapisać więcej danych, jest trochę bardziej nowoczesną formą, ale
generalnie stary dobry cookies również się do tego nadają,
potrafią zapisać te 5 kilobajtów danych, więc teoretycznie niedużo,
ale jeśli przełożyć to na tekst, no to jeden bajt to jedna litera.
A więc jeśli masz 5 kilobajtów, czyli 5
razy 1024 bajty, to możesz naprawdę sporo tekstu tam zapisać w jednym ciasteczku.
Dzięki temu możemy zapisywać użytkownika,
jakieś proste rzeczy, pamiętać jego dane np.
na potrzeby analityki i różnych innych
rzeczy, które wykonujemy na stronie. I takie ciasteczka
zobacz, że mamy tutaj sekcje cookies mogą również zostać zapisane.
Jak widzisz mamy po prostu możliwość w tym przypadku z pomocą samego GET.
Nawet właśnie skasowanie, ustawienie ciasteczka, czyli w tym przypadku np.
GETem będziemy ustawiać ciasteczko, a nie POSTem.
Możemy wywołać to sobie z pomocą tryout i robimy sobie description, czyli
opis takiego ciasteczka możemy zrobić Grzegorz,
wybieramy polecenie Execute i powinniśmy dostać odpowiedź
od serwera, że ciasteczko o nazwie freeform zostało zapisane.
Teraz jak sprawdzić czy takie ciasteczko mam?
Ogólnie mógłbym na przykład zamknąć tą kartę, czyli już nie pamiętać,
mógłbym w ogóle zamknąć przeglądarkę i wejść sobie po raz kolejny na stronę httpbin,
przejść do sekcji inspekcji,
a następnie zobaczyć te ciasteczka, które mamy w aplikacji.
Tutaj w Application znajduje się cała zawartość ta zapamiętana przez aplikację.
Oprócz tych ciasteczek, które możemy
zapisać, to mogą być też obrazki, które się cache-ują, czyli właśnie zapamiętują
u nas właśnie to jest ten Local Storage, o którym mówiłem,
ale ok, przejdźmy do ciasteczek.
Jak rozwinę sobie ciasteczka z httpbin, a
zobacz, że mam to ciasteczko zapisane, czyli freeform.
Grzegorz i przejdźmy jeszcze raz do tych ciasteczek.
Zobaczmy jak się tutaj je zapisuje.
Jeszcze raz to zrobię i freeform tym razem wpiszę jako Adam.
Biorę polecenie Execute.
I zobacz, że to ciasteczko automatycznie nam się tutaj zmieniło
na Adam.
Mamy też polecenie Curl, czyli polecenie, które pozwoli nam takie
ciastko zapisać, ale też zobacz, że po prostu wykonuje ono GET
do takiego adresu z jakimś nagłówkiem z nagłówkiem accept text plain, ale akurat
ten nagłówek moglibyśmy sobie nawet w sumie pominąć
i moglibyśmy po prostu wkleić do przeglądarki taki adres
i powiedzieć, że chcemy cookies set, ale zamiast tego imię równa się Grzegorz,
end, przypominam, bo wcześniej mieliśmy
znak zapytania, więc tutaj już będziemy mieli end nazwisko
Róg I teraz jeśli to prześlę, zobacz, że mam
już te rzeczy zapisane w ciasteczku. I zwróciło mi to tutaj ładnie
taki JSON z informacją o tym jakie w ogóle
ciasteczka są zapisane na tej stronie httpbin.org
dopóki ktoś nie wyczyści pamięci
podręcznej, te ciasteczka będą tu siedzieć.
Oczywiście
jeśli chodzi o takie zapytanie, które
tworzy ciasteczka, możemy przekazać tam jeszcze kilka różnych danych, czyli np.
jak Expiry Date, czyli kiedy to ciasteczko wygasa np.
że za trzy tygodnie ma się samo usunąć, no i jeszcze inne metadane.
Ale w ten sposób możemy bardzo łatwo zapisywać na dysku użytkownika przez jego
przeglądarkę jakieś dodatkowe dane, które nie muszą być na serwerze.
Tak właśnie działają cookies
a kolejna rzecz, którą chciałbym, żebyś
zapamiętał z tej lekcji, o której wspominałem
to jest właśnie ta bezstanowość nowość protokołu HTTP.
To jest bardzo ważne.
No i to są właśnie rozwiązania tej bezstanowości
czy baza danych, czy cookies, czy Local Storage.
Jeśli chodzi o podstawę HTTP, to wszystko.
Oczywiście teraz głównie korzystamy z https, ale generalnie jest to to samo.
Jest to po prostu bezpieczna wersja
protokołu HTTP, która powoduje, że te zapytania i odpowiedzi, które są wysyłane
do i od serwera są szyfrowane i trudno jest je podkraść można powiedzieć.
W związku z tym jest to ten bezpieczny protokół.
No i jeszcze mogłeś spotkać się ze
specyfikacją i z rozróżnieniem na HTTP 1 i HTTP 2.
Rzeczywiście jest nowa wersja protokołu HTTP, czyli HTTP 2.
Nie będę wchodził w szczegóły.
Ogólnie jest w 100% kompatybilna wstecznie
z HTTP 1, który jeszcze pewnie przez wiele lat będzie wspierany
w związku z tym można powiedzieć, że możesz spokojnie z niego korzystać.
HTTP 2 wprowadza trochę nowych, ciekawych
rzeczy, które mają ogólnie przyspieszyć działanie Internetu.
Widziałeś przykładowo, że jak wchodzimy na
Stack Overflow w zakładce Network ładuje nam się bardzo dużo zasobów.
Jest to ułożone w ten tzw.
waterfall, czyli wodospad i ten wodospad pokazuje nam jak szybko się te zasoby w
milisekundach ładują i po tym wodospadzie możesz zobaczyć, że
są to zasoby ładowane, które są jako pierwsze, później kolejne, kolejne itd.
I tak naprawdę protokół HTTP 2
np. jedną z jego fajnych cech jest to, że może
w pewnym sensie łączyć te zapytania, czyli nie musi ich wykonywać jedno po drugim,
czyli w pewien sposób może szybciej pobierać zasoby wykonując je jednocześnie.
Dodatkowo oferuje szereg różnych funkcji, takich jak
można powiedzieć takie trochę zipowanie w locie, czyli pakowanie jeszcze tych
zasobów, żeby były to mniejsze paczki, żeby działał szybciej.
Czyli można powiedzieć, że mówię to teraz w dużym uproszczeniu, ale
są to takie dość techniczne rzeczy, które po prostu powodują, że ten protokół
powinien działać lepiej i szybciej zwracać nam Internet.
Ale generalnie teraz już wiesz naprawdę dużo o tym, jak działa protokół HTTP, jak
funkcjonuje sieć w kontekście wyświetlania stron w przeglądarce,
w kolejnych lekcjach będziemy w związku z tym mogli już przejść do zagadnienia
tak zwanego API, czyli Application Programming Interface.
Do usłyszenia.