Techniki Pracy
2 godz. 14 min · Full-stack i Programowanie
Przemysław NowakSoftware EngineerW GraphQLu niemal wszystko opiera się o zapytania, a dane i ich połączenia możesz sobie wyobrazić jako połączone ze sobą grafy. W kursie zobaczysz jak czytać grafy GraphQLa w oparciu o typy danych oraz nauczysz się jak używać - Query czyli esencji GraphQLa.
Kiedy już będziesz zaznajomiony z tym jak tworzyć zapytania - nauczysz się jak tworzyć dane oraz je aktualizować. Zobaczysz, że z powodzeniem możesz używać filtrów, fragmentów i tworzyć dynamiczne mutację, tak samo jak zapytania. Wszystko to z podpowiedziami oraz wskazaniem dobrych praktyk w codziennej pracy.
Pewnie już nie raz słyszałeś o tzw. real time apps, czyli aplikacjach działających w czasie rzeczywistym, bez potrzeby pytania serwera o dane w interwałach czasowych - ponieważ serwer sam "powie" o tym, że ma dane, a co więcej Ci je przyśle. Tym dokładnie są subskrypcję w GraphQL, możesz z powodzeniem zasubskrybować się do zbioru danych, a kiedy pojawi się coś nowego, serwer wyśle ramkę z nowym contentem za pomocą kanału WebSocket. Tego jak go używać nauczysz się w tym kursie!
Apollo Client zrewolucjonizował sposób w jaki można korzystać z GraphQL w aplikacjach Front-Endowych, poprzez szereg usług dla utrzymania oraz zarządzania cachem po stronie klienta, po wsparcie dla różnych frameworków takich jak React, Angular, Vue. W Kursie nauczysz się jak w szybki i prosty sposób zintegrować serwer GraphQL z aplikacją React przy użyciu Apollo.
Jeżeli jesteś mobile lub web FrontEnd Developerem to z pewnością słyszałeś o wymaganiach dotyczących przynajmniej podstawowej wiedzy z GraphQLa. Nawet firmy, które mają stabilną architekturę opartą o REST API mają w wymaganiach GraphQL ze względu na użycie - czy to na małych mikro serwisach, czy poprzez plany migracji. Statystyki są nieubłagane - coraz więcej firm inwestuje w GraphQL ze względu na rewolucyjne podejście do pobierania danych oraz jego prostotę. Dlatego jeżeli spojrzymy na rynek pracy to możemy zobaczyć, że GraphQL staję się pewnego rodzaju "must have", którego z pewnością warto się nauczyć.
Kurs ten jest skierowany do wszystkich mobile lub web Front-End Developerów czy też osób, które chciałyby po prostu od czegoś zacząć przygodę z GraphQL. Nie potrzebujesz żadnej kompleksowej wiedzy na temat konkretnej technologii, ponieważ skupimy się nad esencją GraphQLa starając się nie mieszać go z żadnym z języków programowania.
15.3.0 +
Witaj w kolejnej lekcji, w której opowiem Ci o typach danych.
Jak widzisz jesteśmy na stronie https://graphql.org/.
Jest to strona z oficjalną dokumentacją GraphQL'a
i znajdujemy się w sekcji scalar types.
Również link do tej strony znajdziesz w plikach źródłowych.
To co możesz tutaj zobaczyć, są to typy wbudowane w GraphQL'a.
Są to tzw. typy scalar i możemy wyróżnić
pięć różnych typów: Int, Float, String, Boolean oraz ID.
Typ ID nie różni się niczym szczególnym od typu String,
poza tym że powinien on być unikatowy, tak abyśmy mogli
stworzyć z niego cache lub takie rzeczy.
Poza typami wbudowanymi mamy również typy customowe,
które tworzymy właśnie z tych wbudowanych typów.
Jeżeli wrócimy do dokumentacji.
To możemy zobaczyć, że nasze metody getBooks,
getBook, getAuthor posiadają swoje własne typy.
Typ Book, Author, PersonResults itd.
Typ Book implementuje typy scalar: typ ID oraz String
oraz typ Author posiada nowy customowy typ Author.
Te typy są zaimplementowane po stronie naszego serwera.
Nie będziemy implementować własnych customowych typów,
ponieważ tym zajmuje się serwer.
Natomiast ważne jest abyśmy umiał je odróżnić.
Kiedy wejdziemy w typ Author
możesz zobaczyć, że mamy kolejne typy skalar jest to: ID, String
dla pól firstName oraz pól lastName.
Dodatkowo są tutaj takie wykrzykniki, które oznaczają,
że dane pole nie może być nullem,
czyli oznacza to, że kiedy zapytamy o pole Author,
to nie może ono zwrócić nulla.
Również kiedy zapytamy o pole String nie może zwrócić nulla czy o pole ID.
Kolejną rzeczą, którą widzisz jest to tak zwany nawias kwadratowy
i oznacza on, że dane pole będzie tablicą.
Kiedy przypomnisz sobie jak używaliśmy typu getBooks,
to zwracana była tablica z książkami.
Jeżeli zobaczymy tą metodę getBook, to zwracana jest po prostu książka,
getAuthor będzie zwracany po prostu author
ponieważ nie ma tutaj tych nawiasów kwadratowych.
Natomiast wróćmy jeszcze do pól typu non-nullable.
Wróćmy do dokumentacji.
Kiedy tutaj niżej,
mamy tutaj rozdział List and Non-Null.
i mamy tutaj kilka przykładów.
Zobaczmy na pierwszy przykład.
Pierwszy przykład implementuje tablicę ze Stringami,
natomiast mamy tutaj wykrzyknik po słowie kluczowym String
czyli pole może być nullem, ale już pola w tablicy nie mogą być nullami,
czyli muszą być tam zwrócone ciągi znaków.
I tutaj jest to bardzo fajnie opisane,
kiedy zwróci nam dane pole null będzie to walidowalne.
Kiedy zwróci nam tablicę również jest to poprawne.
Kiedy zwróci a, b jako stringi to jest to poprawne.
Natomiast w momencie kiedy mamy w tej tablicy nulla to już dostaniemy błąd.
I to waliduje dla nas GraphQL,
więc GraphQL od razu rzuci nam błąd, że mamy niepoprawne dane.
W drugim przykładzie wykrzyknik jest w troszeczkę innym miejscu.
Oznacza to, że dane pole nie może być nullem.
Natomiast to co już jest w środku teoretycznie mogłoby być nullem.
I na tych przykładach tutaj jak widzisz jest to dokładnie opisane.
Kiedy jest null dostaniemy błąd.
Natomiast kiedy jest pusta tablica czy tablica ze stringami
czy tablica ze stringami i nullem to jest to poprawne.
Wracając do naszej dokumentacji,
dla metody getBooks nie możemy dostać pola null.
Czyli na pewno musimy dostać tablicę.
Jeżeli w naszej bazie danych nie będzie książek, to dostaniemy pustą tablicę.
To daje nam pewność podczas implementacji frontendowej, że możemy wykonać
jakieś działania na tablicy typu: map, filter itd.