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