Najważniejsze zagadnienia, które musisz znać
5 godz. 53 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykPrzesyłanie oraz transformacja danych to jeden z najważniejszych elementów działania każdej aplikacji. Dobre zrozumienie tego w jaki sposób odbywa się ten proces, daje równocześnie lepsze zrozumienie całej struktury oraz podejmowania decyzji projektowych. W tym kursie znajdziesz lekcje, które pozwolą Ci uporządkować wiedzę na temat protokołu HTTP oraz formatów wymiany danych.
REST oraz GraphQL to nadal nieodłączone zagadnienia tematu wymiany informacji w kontekście aplikacji webowych. Pomimo tego, że ich koncepcje zwykle są bardzo dobrze opisane w różnych źródłach, tak ich wykorzystanie "na produkcji" potrafi sprawić problemy. W szczególności gdy weźmiemy pod uwagę, wyjątki oraz fakt, że nie każda aplikacja będzie wymagać implementacji REST czy GraphQL w 100%. W tym kursie znajdziesz wiele praktycznych wskazówek związanych z pracą z REST API oraz wprowadzenie do pracy z GraphQL.
Niektóre błędy w aplikacji są bardzo pożądane, w szczególności gdy jasno informują użytkownika o tym, co się wydarzyło oraz o tym, co może z tym zrobić. Pomimo tego, że w wielu przypadkach opracowanie komunikatów leży w rękach osoby odpowiedzialnej za copywriting (i/lub ux writing), tak sama implementacja tych komunikatów odbywa się po stronie kodu. Nie rzadko okazuje się, że poprawna i skuteczna walidacja danych oraz obsługa błędów nie jest oczywista w "produkcyjnych" sytuacjach. W tym kursie znajdziesz najczęściej spotykane problemy oraz sposoby ich rozwiązania.
Bazy danych są praktycznie nieodłączną częścią każdej aplikacji. W roli full-stacka prędzej czy później przyjdzie Ci z nimi pracować a nie rzadko nawet projektować oraz rozbudowywać ich struktury. W tym kursie znajdziesz informacje o bazach danych, które pozwolą Ci je zrozumieć oraz od razu poznać użyteczne techniki, które pomogą Ci w pracy z nimi, zarówno na produkcji jak i w środowisku lokalnym czy testowym.
Nie wszystkie informacje w aplikacji są publiczne. Niektóre wprost nie mogą takie być. Z tego powodu niezbędne są sposoby na to aby poznać a potem weryfikować tożsamość użytkownika, by na jej podstawie przydzielać mu dostęp wyłącznie do zasobów, do których odczytywania posiada uprawnienia. Istnieje wiele technik, które umożliwiają zarządzanie dostępem do danych i w tym kursie poznasz najważniejsze z nich. Dowiesz się nie tylko w jaki sposób zabezpieczać dane ale poznasz też najpopularniejsze sposoby na to aby te zabezpieczenia łamać i obchodzić. Mając świadomość takiej możliwości, będziesz w stanie lepiej podejmować decyzje o tym jak projektować dostęp do informacji.
Istnieją problemy charakterystyczne dla niemal każdej aplikacji. W związku z ich powszechnością, istnieje też szereg rozwiązań lub sposobów na to, aby możliwie zredukować ich następstwa. Na przestrzeni lekcji tego kursu zobaczysz wiele przykładów, które pomogą Ci w codziennej pracy a niekiedy nawet, pozwolą uniknąć błędów, których konsekwencje nie zawsze występują natychmiast.
Kurs powstał z myślą o osobach, które chcą rozwijać się w roli full-stack web developera / developerki, przeprowadzając przez najważniejsze zagadnienia z obszaru wymiany, transformacji oraz przechowywania informacji w aplikacji oraz pomiędzy aplikacjami. Jeżeli potrzebujesz zobaczyć szeroką perspektywę tego, w jaki sposób dane przepływają pomiędzy różnymi częściami aplikacji, lub ugruntować swoją wiedzę na ten temat, to ten kurs jest miejscem, którego szukasz.
W przypadku zapytań HTTP jednym z bardziej istotnych elementów jest tzw.
palą zapytania, czyli nic innego jak
informacje, które są do tego zapytania dołączone.
Takie informacje mogą być przesyłane w
różnych formach i teraz pokaże każdy z rodzajów takiego poglądu.
I pomimo tego, że prawdopodobnie kojarzysz każdy z nich, to też jest szansa na to, że
do tej pory nie było okazji zapoznać się z nimi bliżej.
Tutaj bardzo istotne jest to, że
przykładowo jeżeli zapisujemy zapytanie typu GET na adres API users, to jesteśmy w
stanie przekazać niektóre informacje za pomocą tzw.
query string, czyli po prostu parametrów dołączanych do samego adresu.
Nie trudno się domyślić, że taka forma
przekazywania danych jest dość ograniczona i trudno jest z jej pomocą przekazywać np.
pliki, które charakteryzują się dość dużą objętością.
Zresztą nawet w przypadku zwykłego tekstu jesteśmy tutaj ograniczeni limitem znaków.
Zatem w niektórych sytuacjach, np.
w przypadku konieczności zbudowania
bardziej zaawansowanego systemu wyszukiwania i filtrowania informacji,
konieczne będzie skorzystanie z zapytania typu $POST, do którego dane nie
przekazujemy już bezpośrednio w adresie, tylko w tzw.
ciele zapytania, czyli inaczej mówiąc body.
I to nawet jeżeli przyjrzymy się zarówno
typowi nagłówka oraz przykładowi, będziemy w stanie rozróżnić różne rodzaje poglądów.
Tutaj możemy dołączać do takich zapytań.
Pierwszym i najbardziej podstawowym, ale też dość rzadko wykorzystywanym jest tzw.
text play. Taki rodzaj treści identyfikowany jest za
pomocą nagłówka content type ustawionego właśnie na text plain i przykładem danych,
które możemy w ten sposób przesłać jest zwykły tekst.
Nie ma tutaj żadnego zaskoczenia, ale
jednocześnie w niektórych sytuacjach może przyjść taka potrzeba, aby skorzystać z
przekazywania informacji właśnie w takiej formie.
I tutaj warto jeszcze dodać, że informacje w takiej formie możemy przesyłać wyłącznie
za pomocą metod, które umożliwiają nam przesyłanie informacji za pomocą body.
Oznacza to, że przykładowo za pomocą
metody GET nie jesteśmy w stanie przesłać tekstu w takiej formie.
Drugim rodzajem poglądu jest x www form url encoder.
Taką formę treści oznaczamy nagłówkiem application x www form url encoder i.
Przykładem, o którym tutaj mówimy, jest zapis charakteryzujący się połączeniem
klucza oraz wartości połączonych znakiem sam.
Oznacza to, że ustawiając bailout właśnie
na taki, przekazujemy go tak naprawdę w dokładnie takiej samej formie jak w
przypadku zapytania get i danych query string.
Z tą różnicą jednak, że z punktu widzenia
kodu te zapisywane są w nieco inny sposób niż bezpośrednio w adresie URL.
Na koniec dnia jednak efekt jest całkowicie zbliżony.
I teraz kolejnym rodzajem maila jest Multiple Form Data.
I tutaj jeżeli kojarzysz formularze HTML, to taki format danych wykorzystywany jest
właśnie w momencie, gdy mamy do czynienia z takimi formularzami.
Jednocześnie narzędzia takie jak na
przykład PHP bądź Axis umożliwiają nam ustawienie właśnie takiego nagłówka i też
przesłanie danych w takiej formie, jak gdyby były formularzem.
Przykład takich danych również wygląda podobnie jak w powyższym przypadku.
Jednak takie informacje przesyłane są, jak sama nazwa wskazuje, w wielu częściach.
Oznacza to, że jeżeli nawet pod jakimś kluczem znajdzie się plik, czyli forma
binarna, to i tak w ten sposób zostaną one przekazane poprawnie.
Ostatnim formatem palladu jest Jameson.
Prawdopodobnie doskonale kojarzysz,
ponieważ służy do przekazywania obiektów, które mogą mieć np.
taką strukturę. To wszystko w praktyce oznacza, że
najczęściej przyjdzie Ci korzystać z 3 rodzajów bailout.
Pierwszy jest analogiczny dla parametrów query string, drugi dla danych
przesyłanych za pomocą formularzy, a trzeci charakterystyczny dla obiektów GN.
I teraz pytanie kiedy po której sięgnąć?
Mianowicie co do tego pierwszego musisz
mieć bardzo konkretny powód, aby zwracać informacje w plain text i w momencie gdy
ten powód się znajdzie, z pewnością będziesz o nim wiedzieć.
Jednocześnie ja osobiście nie przypominam sobie takiej sytuacji.
W przypadku drugiego rodzaju palladu
wykorzystywany jest on w momencie, gdy potrzebujesz np.
przesłać zapytanie typu GET i zbudować
odpowiednią strukturę danych i jednocześnie niekoniecznie chcesz to robić
za pomocą dopisywania ich bezpośrednio do samego adresu.
W ten sposób np.
w przypadku PHP po prostu ustawiasz
odpowiedni nagłówek i przesyłasz te informacje w odpowiedni sposób.
O tym, jak to dokładnie zrobić, będziemy sobie jeszcze mówić.
Jeżeli chodzi o trzeci format danych.
Tak naprawdę korzystasz z niego w momencie, gdy z jakiegoś powodu chcesz
naśladować formularz, bądź też przede wszystkim w momencie, gdy masz do
czynienia z przesyłaniem większej ilości danych, np.
plików.
No i ostatni format stosowany jest
najczęściej w momencie, gdy mamy do czynienia np.
z rest API.
Po prostu przekazywanie informacji w takiej formie jest niezwykle wygodne, ale
jednocześnie raczej nie sprawdzi się w momencie, gdy będziesz Apple ładować pliki
lub też gdy zajdzie potrzeba przygotowania zapytania w taki sposób, aby adres do
niego można było skopiować jako parametry query String.
Mam nadzieję, że jest to teraz dla Ciebie
jasne, tym bardziej, że w kolejnych lekcjach zajmiemy się obsługą tych.
Szczególnych formatów zarówno na front endzie, jak i backend.
W związku z tym teraz dziękuję Ci za uwagę i zapraszam do kolejnej lekcji.