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.
W poprzedniej wysyłaliśmy zapytanie z formularza na StackOverflow, ale to
zapytanie było wysyłane GET, ponieważ zwracało dla nas wyniki wyszukiwania.
Najczęściej jednak takie wysyłanie danych z formularza np.
jeżeli korzystamy z formularza kontaktowego na stronie, która ma wysłać
do nas email będzie wysyłane do serwera postem, no bo powinno coś na tym serwerze się
wydarzyć, jakoś serwer powinien te dane przetworzyć i np.
wysłać maila albo przykładowo złożyć zamówienie.
Jeśli wejdziesz na httpbin.org tutaj na dole znajduje się coś takiego jak HTMLform
i spróbujmy teraz przejść do narzędzi inspekcji, żeby od razu w zakładce Network
zobaczyć jak wygląda zapytanie, które zaraz wyślemy,
a to co będziemy robić, to zamawiać pizzę.
Więc jeśli jeszcze nie zgodnieliście albo
nie jedliście lunchu, to wpisuję tutaj nazwę klienta,
numer telefonu, adres email, możemy go zamarkować
i teraz jaką chcemy pizzę zamówić?
Średnią,
weźmy taką z bekonem i jeszcze z cebulą
a następnie wpiszmy tutaj czas dostawy np.
na godzinę piętnastą i możemy jakieś dać
dodatkowe info, dodatkowe instrukcje o dostarczeniu.
Teraz jeżeli jak kliknę Submit order powinno pójść zapytanie do serwera,
natomiast zanim to zrobię jeszcze kliknę
sobie prawym przyciskiem i zobaczę z pomocą funkcji inspekcji jak to jest
skonstruowane w HTML. Tak jakbyśmy się spodziewali
mamy różne akapity, mamy button,
jeżeli button nie ma żadnych dodatkowych atrybutów, tutaj będzie on automatycznie
wysyłał to, co znajduje się w całym formularzu.
Zobacz, że cały ten znacznik form obejmuje cały formularz i wszystkie jego pola, wszystkie input,
no i jego metodą jest metoda POST, czyli będziemy wysyłać dane do serwera po to,
żeby gdzieś tam je sobie pewnie zapisał czy stworzył nowego użytkownika, czy w tym
przypadku nowe zamówienie i akcją, czyli URI, na który będziemy wysyłać jest post.
Już wszystko rozumiesz
w związku z tym możemy kliknąć teraz Submit.
Przenieśmy się jednak wcześniej do
zakładki Network, żebyśmy zobaczyli co tutaj się dzieje.
No i został wysłany ten nasz post.
Zobacz, że w odpowiedzi z serwera dostaliśmy
ok, przyjąłem, wszystko jest w porządku,
natomiast dodatkowa odpowiedź, którą dostaliśmy od serwera to
poza tymi nagłówkami, które tutaj mamy,
sama treść odpowiedzi to wszystkie te dane, które do niego przesłaliśmy.
Odpowiedzią, które możemy dostawać od serwera wysyłając takie zapytanie, na
przykład zamówienie albo powiedzmy rejestrując klienta w serwisie mogą być
różne. Od prostego OK, czyli dwóch liter do tak naprawdę skonstruowania odpowiedzi
dla nas w taki sposób, że hej, przyjąłem zamówienie dla tego i tego klienta na tą i
na tą godzinę, taka i taka pizza, czyli w sumie lepiej, no bo
my widzimy w tej odpowiedzi i jesteśmy pewni, że dane, które przekazaliśmy
zostały przekazane prawidłowo. I tak tutaj nam serwer odpowiedział.
Jeśli chodzi o httpbin to dodatkowo nawet
w samej treści strony nam wyświetli całą tą odpowiedź,
no ale tak naprawdę normalnie jakbyśmy zamawiali pizzę na stronie pizzerii dostalibyśmy po
prostu tutaj ładny komunikat Twoje zamówienie zostało złożone.
No i co się dzieje z tym dalej?
Ale konkretnie co my tutaj mamy?
Zobacz, że argumentów nie mamy.
Mamy za to, nie mamy też takiej sekcji data, ale mamy przekazany
przez serwer cały taki schemat danych, który obejmuje
informacje z naszego formularza, czyli Customer email, customer length itd.
Te dane dotarły w takiej formie do serwera
i np. w serwerze mogą być teraz zapisane powiedzmy w bazie danych MySQL,
czyli zostały zapisane mój adres email, moje imię i nazwisko
i teraz jeżeli np. dostawca pizzy ma jakąś
aplikację mobilną, która pokazuje mu wyświetla te dane, no to jeśli one są
zapisane na serwerze z tej bazy danych ta kolejna aplikacja może teraz to sobie
wyciągnąć i wie taki dostawca gdzie mi tą pizzę dostarczyć.
Czyli nie mogłoby to polegać na tej komunikacji takiej jednokierunkowej GET.
Tutaj musimy zapisać jakieś dane na
serwerze i powiedzmy ten dostawca w swojej aplikacji musi je zobaczyć.
To jaki format tutaj jest nam przekazywany to format JSON.
Możemy to zobaczyć też w nagłówku.
Zobaczmy na nagłówek.
I tutaj mamy coś takiego jak application/json.
Ten JSON
jest formatowany u mnie akurat w przeglądarce, ale to tylko dlatego,
że mam zainstalowany taki dodatek, który się nazywa JSON Viewer.
Polecam Ci go sobie zainstalować.
Gdyby tego nie było po prostu dostalibyśmy taki kod niesformatowany
i ponieważ JSON to nie jest coś, co przeglądarka interpretuje tak jak HTML,
gdybyśmy tu dostali HTMLa, no to dostajemy to w takiej, a nie innej formie.
Jeśli chodzi o JSON, jest to bardzo ważny format, ponieważ jest to podstawowy
w zasadzie model tworzenia danych, przesyłania ich właśnie
do serwera jako zapytania czy zwracania i w związku z tym warto go znać.
Ja jestem na stronie Object Generator
JSON i tutaj możemy wygenerować sobie taki model.
Czyli gdybyśmy chcieli sami wysłać takie
zapytanie powiedzmy z konsoli, tak jak to robiliśmy wcześniej,
to możemy w jego treści przygotować sobie taki model danych do wysłania,
czyli np. będzie to
pizza, którą ktoś zamawia i wpisujemy np.
hawajska.
Następnie składniki.
I teraz właśnie jeśli mielibyśmy takie proste zapytanie, czyli klucz wartość, to
tak naprawdę ono do serwera mogłoby zostać przekazane po prostu w takiej formie query
stringu, pizza hawajska i już też serwer dostałby te dane,
natomiast my możemy w JSON
przekazać te dane trochę lepiej ustrukturyzowane i trochę ich więcej.
Czyli np. gdybyśmy chcieli przekazać składniki, to
nie robilibyśmy tego w taki łopatologiczny sposób.
Składnik 1 równa się pieczarki, składnik 2 równa się cebula
tylko zrobilibyśmy sobie składniki
jako tablicę, a następnie przekazali do jej cebula i pieczarki.
I zobacz, że to, jak formatuje nam się
teraz ładnie JSON, to mamy taką tablicę.
Mamy składniki i w nawiasie kwadratowym
mamy cebula i pieczarki i wtedy już serwer może sobie to ładniej
zinterpretować, lepiej odebrać, wstawić do odpowiednich tabelek itd.
To co możemy jeszcze tutaj zrobić to np.
przekazać obiekt.
Jeśli mamy tutaj klienta,
który składa zamówienie to możemy powiedzieć, że klient ma imię Grzegorz,
nazwisko Róg i numer telefonu itd itd i zobaczysz, że
też jest to sformatowane w trochę inny sposób
w JSON.
Mamy podobnie jak tablica, ale tym razem jest to obiekt więc są nawiasy klamrowe
i znów pary klucz wartość, imię nazwisko
i wtedy serwer może bardzo łatwo te
informacje wszystkie ładnie poukładane zinterpretować
a to, co ja zrobiłem tutaj definiując sobie
ten model to tak naprawdę tylko zrobiłem to po to, żeby JSON mi się sam stworzył.
W nim jest sporo nawiasów klamrowych, sporo przecinków, dwukropkó,
ta składnia musi zostać zachowana
w związku z tym czasem łatwo się tutaj pomylić.
Lepiej czasem na początku korzystać sobie z takiego generatora.
No i gdybyśmy wysyłali zapytanie
przez terminal, moglibyśmy wysłać je postem właśnie na ten adres,
a następnie w treści zapytania przekazać ten kawałek JSON, który stworzyłem i
zamówienie zostałoby złożone na identycznej zasadzie.
Tak, w związku z tym to działa.
Jeśli chodzi o popularne formaty danych, które tutaj wykorzystujemy, jest to JSON,
taki najbardziej nowoczesny
format, ta składnia do prezentowania danych z napisami klamrowymi,
ale mamy także często korzysta się teraz już trochę mniej, ale
kiedyś korzystało się często z XML, którego pokazywałem Ci też wcześniej.
Był to po prostu trochę inny zapis z pomocą tych nawiasów ostrych,
ale generalnie proponuję Ci już skoncentrować się na tej JSON.
Jeśli będziesz w ten sposób tworzył, przesyłał dane czy formatował je,
no i wiesz już jak działa ta komunikacja
przynajmniej z formularza, który wysyła się do naszego serwera.
Teraz te dane na serwerze mogą zostać w pewien sposób zinterpretowane
a o tym porozmawiamy sobie już w kolejnych lekcjach.
Do usłyszenia.