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.
Wykorzystanie gry po stronie serwera, czy
też bardziej po prostu przygotowanie serwera jest tematem bardzo wymagającym.
Przejdziemy sobie przez to teraz bardzo
ogólnie, natomiast miej na uwadze fakt, że mogę tutaj wykorzystywać pojęcia i
zagadnienia, które na ten moment mogą być dla Ciebie nie do końca jasne.
Z tego powodu z powodzeniem możesz pominąć
tą lekcję i wrócić do niej w momencie, gdy będziesz już mieć dość duże pojęcie na
temat projektowania backendu lub też innych frameworka.
Znajdujemy się w tym momencie na stronie PRISM, która sama w sobie jest bardzo
popularnym narzędziem jeżeli chodzi o pracę z bazami danych.
Z tego też powodu chyba nikogo nie
zaskakuje, że mamy tutaj możliwość wykorzystywania gra SQL.
Jeżeli spojrzymy na przykład, który mamy
tutaj umieszczony, zobaczymy sobie trzy najważniejsze elementy serwera SQL.
Pierwszą z nich są definicje typów, czyli po prostu bardzo precyzyjne określenie
tego, z jakim rodzajem danych mamy do czynienia.
W pewnym sensie te definicje typów przypominają pakiet.
Aczkolwiek jak chociażby widzisz w tym miejscu, to nie jest do końca to samo.
Następnie mamy resolve, czyli specjalne
funkcje, które wykonują konkretne akcje w zależności od zapytania.
Czyli przykładowo jeżeli mamy tutaj resolve old users, no to w momencie kiedy
po stronie klienta napiszemy zapytanie uwzględniające tą frazę, zostanie wykonana
funkcja, która zwróci dane w sposób dokładnie opisany wewnątrz tej funkcji.
Poza tym to czy będziemy mieć dostęp do tej funkcji oraz co dokładnie z niej
zostanie zwrócone jest tutaj nadal doprecyzowane z pomocą typów.
Połączenie jednego z drugim to nic innego jak tzw.
schema, czyli po prostu schemat SQL, który
możemy wykorzystać do tego, aby go utworzyć.
W ten sposób jak widzisz, mamy tutaj prostą aplikację Express czy jest, która
po prostu posiada jeden endpoint, do którego podłączony jest gra SQL.
W rezultacie w momencie gdy będziemy wykonywać zapytania na endpoint, zostaną
one obsłużone za pomocą kodu zapisanego tutaj.
No i teraz oczywiście to wszystko w
praktyce jest zdecydowanie bardziej złożone i skomplikowane.
Natomiast ogólne zasady wyglądają właśnie w taki sposób.
Co więcej, jeżeli teraz przejdziemy sobie
do dokumentacji, gdzie jest, to zobaczymy, że również mamy tutaj możliwość
skorzystania zamiast API właśnie z możliwości gra SQL.
Tutaj nie będziemy przechodzić przez ten
proces krok po kroku, ponieważ według mnie jest wystarczająco opisowy do tego, aby
nawet samodzielnie sobie przez niego przejść.
Oczywiście jeżeli tylko masz taką potrzebę.
Natomiast dla mnie najważniejsze jest to,
aby było dla Ciebie jasne, że w przypadku MES czy jest.
Masz do dyspozycji dwa sposoby wykorzystania gra SQL.
Pierwszy z nich dotyczy sytuacji, w której
wykorzystujesz TypeScript i to na podstawie typów TypeScript.
To określana jest tak zwana schema.
Oczywiście tutaj musisz podłączyć odpowiednią warstwę serwisową do tego, aby
przykładowo pobierać informacje z bazy danych i też przesyłać je do klienta.
Nie zmienia to jednak faktu, że samo
wykorzystanie tego skryptu bardzo ułatwia tutaj sprawę.
Oczywiście musisz skorzystać z dodatkowych
narzędzi, które są charakterystyczne dla agrafki oraz serwera Apollo, natomiast i
tak zadanie jest zdecydowanie bardziej ułatwione.
Z drugiej strony możesz wykorzystać
odwrotne podejście, czyli samodzielnie określać z kim, na podstawie której metod
wygeneruje dla Ciebie odpowiednie definicje typów dla TypeScript.
Efekt końcowy jest tutaj mniej więcej taki, że jeżeli przejdziemy do takiej
aplikacji, którą utworzyłem właśnie na potrzeby tej lekcji, to zobaczymy, że
jedyne co musimy tutaj zrobić to zaimportować odpowiedni moduł graf.
SQL, do którego podłączymy driver Apollo i ustawimy podstawowe ustawienia.
Następnie w moim przypadku utworzyłem sobie tutaj drugi moduł, czyli modułu
użytkowników, w przypadku którego zależnościami są nasze Razor 2D o których
już wspomniałem oraz warstwa serwisowa odpowiadająca za dostęp do danych.
No i teraz jeżeli chodzi o Razor Query
opisują one wszystkie dostępne metody dostępne w SQL u, a konkretnie w tej
części dotyczącej pobierania informacji na temat użytkowników.
Mamy tutaj klasycznego Clouda, który w
sposób precyzyjny opisuje to w jaki sposób ma wyglądać zapytanie do SQL, a jakie
argumenty są przyjmowane i co z nim jest robione.
W moim przypadku sprowadza się to w
zasadzie tylko do tego, aby wykorzystać te argumenty w taki sposób, aby mogły zostać
przekazane do warstwy serwisowej, gdzie również znajduje się taka imitacja bazy
danych, czyli w tym przypadku po prostu tablica.
Aczkolwiek tutaj oczywiście do grupy mógłby wejść jakiś ORM, który uzyska
dostęp do bazy danych, a następnie na podstawie zapytań, które kierowane są do
Resolve będzie wchodzić w interakcję z danymi.
W każdym razie w momencie, który będziesz poznawać lepiej, inwestycja jest.
Zobaczysz, że tak naprawdę będziemy przechodzić przez bardzo podobny proces w
przypadku projektowania REST API, z tą różnicą, że naturalnie nie będziemy mieć
tutaj rezultatów, tylko warstwę kontrolerów, które po prostu będą
obsługiwać endpoint, a w tym przypadku mamy do.
Z obsługą zapytań SQL i tak naprawdę nie ma tutaj nic więcej do powiedzenia.
Oczywiście możesz przejrzeć sobie ten kod i zobaczyć mniej więcej jak to wygląda.
Natomiast jeżeli miałbym coś zasugerować,
to lepiej poczekać do momentu aż w pełni zrozumieć to jak działa
oraz ogólne i również bardziej szczegółowe założenia backendu.
Kluczowe w tym wszystkim jest jednak to,
że mamy tutaj ekspozycję serwera SQL, czyli nasz endpoint, na które kierujemy
zapytania, następnie Resolve, które te zapytania interpretują.
Warstwę serwisową, która kontaktuje się z bazą danych.
No i oczywiście definicje typów, które
dbają o to, w jaki sposób możemy wchodzić w interakcję z danymi.
Jeżeli chodzi o wykorzystanie gra SQL a po stronie backendu to byłoby na tyle.
Nie będziemy się tutaj dłużej zatrzymywać ze względu na to, że nasza uwaga powinna
skupić się w pierwszej kolejności na lepszym poznaniu nas.
Czy jest ona z założeń backendu?
W momencie, gdy te staną się dla Ciebie
jasne, uwierz mi, że powrót do grafu będzie zdecydowanie prostsze.
I też myślę, że przynajmniej ta część
dotycząca wykorzystania jego możliwości po stronie klienta przyjdzie Ci bardzo łatwo.
Teraz dzięki za uwagę i do usłyszenia w kolejnych materiałach.