Projektowanie Serwera
2 godz. 7 min · Full-stack i Programowanie
Przemysław NowakSoftware EngineerJeżeli kiedykolwiek używałeś GraphQL aby pobrać dane na Front-endzie to z pewnością wiesz, że aby to zrobić musisz znać połączenie Grafów oraz wiedzieć jak stworzyć odpowiednie zapytanie. W kursie tym nauczysz się jak takie grafy projektować od strony serwera i dostarczać je dla FrontEnd Developerów.
Dowiesz się jakie jest połączenie pomiędzy schematem serwera a resolverami. Schemat (schema) to nic innego jak opis aplikacji GraphQL z podziałem na typy i relacje - właśnie w taki sposób tworzą się grafy - natomiast resolvery są odpowiednikami w kodzie - wykonującymi się za każdym razem kiedy ktoś wysyła odpowiednie zapytanie. Dokładnie wytłumaczę Ci korelację pomiędzy tymi dwiema rzeczami oraz na konkretnych przykładach zrozumiesz jak je implementować.
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ć.
Przekonasz się, że tworzenie backendu z GraphQL jest niesamowicie szybkie. Kiedy zrozumiesz podstawowe połączenia schematu i resolverów nic Cie nie powstrzyma od błyskawicznego pisania kodu. Jeżeli chcesz stworzyć MVP, czy zaimplementować elastyczny mikro serwis to GraphQL może okazać się strzałem w dziesiątke dlatego, że możesz stworzyć aplikację z prędkością światła, a co więcej, każda rozbudowa jest bardzo prosta ze względu na brak zależności w kodzie.
Tego wszystkiego nauczysz się w tym kursie, odczyt i zapis danych wydają się rzeczą normalną, natomiast dla mnie najciekawszą rzeczą są subskrypcje dzięki, którym możesz tworzyć aplikacje działające w czasie rzeczywistym. Zobaczysz, że z GraphQL wcale to nie jest skomplikowane, a wręcz banalnie proste!
Kurs ten jest skierowany do osób, które mają podstawową wiedzę nt. GraphQLa oraz znają podstawy JavaScript - ponieważ za pomocą NodeJS zaimplementujemy serwer GraphQL. Jeśli jeszcze tego nie zrobiłeś/aś - polecamy przed przystąpieniem do tego kursu przerobienie materiałów JavaScript od Podstaw, kursu podstawowego GraphQL, a mile widziana jest także znajomość zagadnień z kursów Node.js.
W tej krótkiej lekcji pokażę Ci jak
skonfigurować naszą aplikację, aby można było jej bezpiecznie używać na produkcji.
W tym momencie kiedy odpalimy nasz serwer,
czyli zrobimy npm start to nasza aplikacja jest dostępna na porcie
4000 i tak naprawdę każdy może tutaj wejść i sobie zobaczyć jak wygląda nasza schema,
nasza dokumentacja, co nie jest do końca fajne.
Nie chcielibyśmy tutaj ludziom tego pokazywać, więc kiedy będziemy uruchamiać
nasz serwer na produkcję, czyli będziemy robić npm start na produkcji, musimy
wskazać mu, że tak naprawdę nie chcemy, aby ten program był dostępny.
Jeżeli zajrzymy do dokumentacji grafu
Elliota, to tutaj w polu Playground możemy mu przekazać stringa.
Czyli tak naprawdę na jakim adresie ma się
odpalać nasz playground, albo możemy po prostu przekazać false.
Czyli w momencie kiedy będziemy odpalać nasz npm start czyli nasz serwer na
produkcji to będziemy chcieli przekazać false, aby temperament nie był dostępny.
Wtedy będziemy bezpieczni jak ktoś nie będzie mógł zajrzeć do naszej.
Natomiast w przeciwnym wypadku
będziemy chcieli ustawić tę wartość, która jest domyślną wartością, czyli po prostu
na domyślnym adresie będziemy tutaj uruchamiać grę.
Czyli Wróćmy więc, przejdźmy do kodu
i to, co ja proponuję zrobić, to dodanie zainstalowanie Dota 2.
Wtedy będziemy mogli używać tutaj zmiennych środowiskowych.
A więc dodajmy na początku plik.
I tutaj stwórzmy może taką zmienną jak production.
I ustawmy ją na Forex.
To oczywiście nie będzie bulion, tylko to będzie string.
Natomiast dla nas to nie jest problem.
Zrobimy taką implementację, żeby wspierać stringa, bo lina
i to co ja proponuję zrobić to zainstalować taką paczkę jak dotąd
i jest to paczka, która będzie nam odczytywała wszystkie zmienne
środowiskowe z pliku ELF w środku naszego jest.
Czyli jeżeli zrobimy do FROM to ten.
OK i teraz wykonajmy dostęp.
OK.
A w zasadzie wykonajmy ten
config, ponieważ to jest metoda która z tej paczki zbierze cały config.
To wtedy do naszych zmiennych środowiskowych, czyli do process end.
Czyli do tego koszyka trafią również
wszystkie rzeczy, które mamy w tym miejscu.
Czyli tak naprawdę teraz będziemy mieć dostępną tą zmienną
production i możemy to w zasadzie podglądnąć.
Więc zróbmy tutaj może konsolowe.
I wykonajmy start.
Na około mamy jakiś błąd.
Proces mamy tutaj, że jest nie zdefiniowany przez literówkę.
OK i tutaj dostaliśmy tą wartość czyli false, czyli dokładnie to co
zdefiniowaliśmy teraz na podstawie tej wartości, którą mamy w naszym.
Proces ten
możemy tutaj w opcjach naszego serwera dodać czy chcemy mieć projekt czy nie.
Aby konfigurować opcje serwera musimy
dodać jako pierwszy argument obiekt i to będzie właśnie nasz poprzez.
I teraz tak jak widzisz ta opcję możesz tutaj konfigurować rozmaicie.
Jest tutaj ich sporo, możesz konfigurować endpoint, port, tracking.
Jest tutaj kilka rzeczy, natomiast nas
interesuje ta opcja Playground i my tutaj dla opcji Playground.
Będziemy chcieli powiedzieć.
3.
Jeżeli to jest ustawione na false, to tak naprawdę chcemy zwrócić false.
A jeżeli tutaj.
A jeżeli nie czyli w przeciwnym wypadku to będziemy zwracać tą domyślną wartość,
czyli będziemy chcieli uruchamiać Play na naszym gruncie.
Będziemy musieli teraz jeszcze raz włączyć serwer.
OK, teraz production jest ustawione na
false, więc nasz serwer powinien działać poprawnie.
Zobaczmy czy tak rzeczywiście jest.
Odświeżamy. OK, nie jest.
Nasz serwer nie działa poprawnie.
Czyli w zasadzie jeżeli jest w Polsce to wtedy.
Możemy wyświetlić Play, ale ponieważ
mówimy, że produkcji nie ma, a jeżeli nie, to wtedy nie chcemy wyświetlić.
Czyli tak to powinno wyglądać.
A w zasadzie jeżeli byśmy chcieli, żeby było jeszcze lepiej, to tak naprawdę tylko
i wyłącznie kiedy jest true, to wtedy nie wyświetlamy ekranu,
a jeżeli nie to wyświetlamy i wtedy będziemy musieli ustawiać
produkcję true w naszym pliku żeby wyłączyć.
Czyli teraz kiedy ustawimy tutaj true to nasz program
powinien być wyłączony, natomiast będziemy musieli odświeżyć serwer.
OK, weźmy stronę.
Jak widzisz nie jesteśmy w stanie łączyć
brandu, czyli nikt nie jest w stanie się teraz tutaj do tego dobrać.
A teraz zmieńmy na false czy w ogóle na jakąkolwiek inną wartość.
Tylko wartość true będzie wyłączała playground.
Czyli nawet jeżeli nie będziemy mieć tutaj
tego zdefiniowanego jeszcze raz, jeżeli nie będziemy mieć tego
zdefiniowanego, to również tutaj Wrong będzie działał, czyli na produkcji.
Po prostu będziemy musieli na serwerze
produkcyjnym dodać ten plik do tmp i zdefiniować tutaj taką wartość
production na true aby wyłączyć playground i wtedy będziemy bezpieczni.
Teraz Playground działa i to już wszystko w tej lekcji.
Dziękuję Ci za uwagę.