REST – pierwsze kroki

Od czego by tu zacząć … thinkingJest  to moja pierwsza styczność z REST, dlatego najpierw musiałem zasięgnąć trochę wiedzy aby móc cokolwiek napisać i zrozumieć. Dodatkowo chciałbym w tym wpisie przedstawić jak ja stawiałem pierwsze kroki. Jest to niejako tutorial jak zacząć.

REST

Ale zaraz zaraz co to w ogóle jest ten REST?  W dużym skrócie jest protokołem komunikacji opartym na protokole HTTP. Ważny jest adres URL, gdyż to przez niego wykonujemy wszystkie działania na konkretnym obiekcie np. pobranie listy użytkowników wyglądałoby następująco:

/users/getUsersList

Lub pobranie konkretnego użytkownika

/users/getUser/1

Pobieramy użytkownika o id == 1.

Przy komunikacji z serwerem najczęściej korzystamy z 4 metod:

  • GET – pobieranie
  • POST – tworzenie
  • PUT – aktualizacja
  • DELETE – usuwanie

REST

Node.js – przygotowanie środowiska

Tyle widziałem na początku :p Skorzystać z node.js. Zacznijmy od zainstalowania node.js pobieramy z tej strony i insalujemy. Aby sprawdzić czy node działa uruchamiamy wiersz poleceń windowsa (uruchom -> cmd) i wpisujemy polecenie

node -v

Polecenie to sprawdza wersje node’a. Gdy wszystko działa poprawnie naszym oczom powinien ukazać się następujący wynik.

node

Oczywiście numer może różnić się w zależności od tego jaką mamy wersję. I to już spytacie? Niestety nie ma tak łatwo, teraz trzeba zainstalować jeszcze express (o czym ja nie wiedziałem :p). Express.js albo w skrócie express jest to framework serwera aplikacji internetowych dla Node.js. Jest tak zaprojektowany aby można było w łatwy sposób budować aplikacje webowe i API. Instalacja express.js odbywa się przez wpisanie w wierszu poleceń:

Na koniec dodajemy jeszcze body-parser:

Niestety sam nie wiem i nie mogłem znaleźć informacji do czego dokładnie służy ale w większości przykładów to było :p Jeśli wie ktoś co to i do czego służy, proszę o info w  komentarzu. Będę wdzięczny 🙂

Tworzymy pierwszy REST

W dzisiejszym wpisie stworzymy 2 najczęściej stosowane metody GETZałóżmy, że chcemy pobrać listę użytkowników oraz dodać użytkownika. Na chwilę obecną uczyłem się operacji na plikach (do integracji z bazą jeszcze wrócę, gdy mój projekt Kopstt będzie się rozwijał).

Zacznijmy od utworzenia pliku JSON (ja preferuję ten format przesyłania danych), w którym to zdefiniujemy listę użytkowników. Użytkownik będzie posiadał 3 pola:

  • name
  • password
  • id

Na początek dodajmy trzech użytkowników:

No ale co dalej? Teraz stwórzmy nasz serwer (plik service.js – nazwa może być dowolna), który będzie nasłuchiwał czego od niego żądamy. W drugiej kolejności musimy zdefiniować wymagane biblioteki express, fs (do działań na plikach), oraz body-parser.

Następnie definiujemy naszą aplikację zmienna app i jej wywołanie express();

oraz wskazujemy aplikacji aby korzystała z body-parsera:

Teraz możemy zdefiniować nasz serwer, definiując port na którym ma działać.

Możemy pominąć funkcje, która informuje nas, że serwer wystartował ale warto ją zachować.

Uruchamiając teraz serwer otrzymamy w przeglądarce komunikat:

Pobieranie listy użytkowników

Teraz musimy nadać ciało naszej aplikacji. Ściślej ujmując zdefiniować akcje jakie ma wykonywać pod danym adresem. Na początek pobierzemy listę użytkowników z naszego pliku users.json

W przeglądarkę możemy wpisać http://localhost:8081/getUsersList otrzymamy wtedy wynik naszego zapytania, a więc zawartość naszego pliku json. Super, coś już działa. Oczywiście możemy wykasować linię console.log(data), ale wtedy nie będziemy w konsoli widzieć wykonywanych akcji. Można również wpisać tam dowolny  tekst, nie koniecznie nasze dane. Kod ten zamieszczamy przed var server.

Operacje dodawania, kasowania, aktualizacji wyglądają analogicznie do powyższego przykładu pobierania listy użytkowników. Zaraz po

app.get(‘

definiujemy nazwę naszej metody za pomocą, której będziemy wykonywać określone działania.

Dalsza nauka

Mam nadzieję, że w miarę zrozumiale opisałem jak komunikować się z serwerem za pomocą RESTa. Niestety dopiero zagłębiam się w temat i nie mogę przekazać tyle wiedzy ile sam bym chciał. Następnym razem postaram się przedstawić Wam integrację z bazą danych, bo do tego dążę. Dziś w szczególności liczę na Wasze komentarze, zwłaszcza osób, które z RESTem mają do czynienia na co dzień albo wiedzą o co kaman 🙂

  • http://webappcraft.blogspot.com/?view=classic Piotr Gajowniczek

    Cześć,
    Zgodnie z dobrymi praktykami RESTa (np.: http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#restful) adresy URL nie powinny zawierać nazw akcji tylko zasobów, a akcje powinny być reprezentowane przez odpowiednią metodę HTTP.
    W przedstawionym przez Ciebie przykładzie, według mnie lepszym podejściem byłoby użycie następujących adresów:
    /users/getUsersList => [GET] /users
    /users/getUser/1 => [GET] /users/1