A 8 2

Choć większość współczesnych software house’ów głosi wszem i wobec swoją wierność metodyce Agile i Scrum, to i tak ich deweloperzy niejednokrotnie stają w obliczu sytuacji z piekła rodem. Co mam na myśli? Oczywiście chodzi o model kaskadowy. Programiści front-endowi lub aplikacji mobilnych są zależni od wkładu deweloperów back-endu; nie wspominając już o testerach, którzy zwykle wykonują swoje zadania pod sam koniec workflow. Wśród projektów, w których często napotkać można wspomniany scenariusz, są te, które wymagają stworzenia API. Istny horror? Nie dla nas. Postanowiliśmy spróbować swoich sił i rozwiązać przynajmniej część tego problemu. Tak właśnie powstało LocalAPI.

Zobaczcie, jak wykorzystać, program, który ułatwi życie i współpracę pomiędzy projektantami API a resztą zespołu deweloperskiego.

 

Poznajcie LocalAPI

LocalAPI jest aplikacją stworzoną w oparciu o platformę Node.js, która pozwala na lokalne uruchomienie mockowego API i generowanie fake’owych danych. Jej głównym celem jest umożliwienie różnym członkom zespołu deweloperskiego i testerskiego pracy z RESTowym API (niemal) niezależnie od stadium jego rozwoju.

Do symulacji w pełni funkcjonalnego API aplikacja wykorzystuje definicje zawarte w plikach RAML. W razie gdybyście nie go znali: RAML (RESTful API Modeling Language) to język specyfikacji oparty na YAML-u i JSON-ie, wykorzystywany do opisu RESTowego API w sposób, który jest zrozumiały zarówno dla ludzi, jak i komputerów. RAML definiuje zasoby, ścieżki, parametry zapytań w API, a pliki JSON zawierają przykładowe obiekty zapytań i odpowiedzi.

Generowanie fake’owych danych oparte jest na prostych szablonach JavaScript. Pliki, które domyślnie generowane są przy każdym uruchomieniu LocalAPI, mają służyć jako przykładowa treść zapytań do mockowego API i odpowiedzi na nie przy poszczególnych metodach.

Ponadto dane, z których korzysta nasze lokalnie postawione API, walidowane są na podstawie plików JSON-schema, określające strukturę, jaką powinno mieć każde zapytanie i odpowiedź.

Mockowe API dla bystrzaków

Praca z LocalAPI jest bardzo prosta. Żeby uruchomić aplikację, wystarczy jedynie wpisać prostą komendę w terminalu i poczekać chwilę, aż na ekranie pojawi się komunikat App running at http://localhost:3333. Zanim to jednak nastąpi, musimy przygotować RAML-a (wraz z plikami JSON-schema) oraz mieć pod ręką szablony JS.

Ale po kolei. Aktualnie LocalAPI wspiera RAML-a w wersji 0.8. Zależnie od metod i obranej struktury przygotowywanego API, LocalAPI będzie emulować różne zachowania. Aplikacja obecnie udostępnia cztery rodzaje odpowiedzi na symulowane zapytania do lokalnego API.

  • Wyłącznie fake’owe dane
    Dostępne dla zapytań GET. Zapytanie zwraca dane z pliku podanego w RAML-u jako zawartość odpowiedzi.

     
  • Dane fake’owe scalone z danymi wysłanymi w zapytaniu
    Dostępne dla zapytań POST, PUT i PATCH.

     
  • Wyłącznie dane wysłane w zapytaniu
    Dostępne dla zapytań POST, PUT i PATCH.

     
  • Pusta odpowiedź
    Dostępna dla wszystkich metod.

Szablony natomiast mogą zawierać kod JavaScript, metody biblioteki Faker.js oraz kilka wewnętrznych metod przygotowanych specjalnie dla LocalAPI. Przy każdym uruchomieniu aplikacji, podfolder /examples w folderze naszego RAML-a zostaje wyczyszczony i utworzone zostają nowe pliki JSON.

Aby uniemożliwić aplikacji korzystanie z losowych danych, a w zamian za to zrobić użytek z własnych, wcześniej przygotowanych plików, możliwe są dwa wyjścia. Możemy stworzyć osobny podfolder, (np. /static_examples), w którym przechowywane będą pliki z przykładami odpowiedzi z lokalnego API. Aplikacja w dalszym ciągu może generować nowe fake’owe dane z szablonów, jednak wspomniany folder z przykładami statycznymi pozostanie nienaruszony.

Możemy również skorzystać z opcji --no-examples w trakcie uruchamiania aplikacji, by zupełnie wyłączyć generowanie danych. LocalAPI będzie pobierało przykłady z dowolnego folderu podanego w pliku RAML.

Wyposażeni w RAML-a, JSON-schemy i szablony, jesteśmy gotowi. Wpisujemy w konsoli:

localapi [option] run <path_to_raml>

…i to wszystko!                                                                 

 

Co przyniesie przyszłość

LocalAPI jest niepozornym, ale użytecznym narzędziem, które ułatwia rozwój oprogramowania, testowanie i dokumentację. Dobra wiadomość jest taka, że twórcy aplikacji nie zamierzają osiąść na laurach. Plany obejmują między innymi wsparcie dla RAML-a w wersji 1.0, persystencję danych oraz możliwość przesyłania parametrów zapytań. Miejcie oczy szeroko otwarte!

Jeśli LocalAPI Was zainteresowało, odwiedźcie repozytorium naszej aplikacji na GitHubie (wymienione w sekcji poniżej). Czytajcie, instalujcie, testujcie, a nawet wnoście swój wkład w rozwój aplikacji. Jesteśmy otwarci na komentarze, sugestie i usprawnienia.

 

Dla dociekliwych

https://github.com/isaacloud/local-api/wiki

http://raml.org/

https://github.com/marak/Faker.js/

Magdalena Szturc