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.
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
https://github.com/marak/Faker.js/
Magdalena Szturc