Postman - Jak wysłać request do Springa

W dużym skrócie można powiedzieć, że aplikacja webowa to system informatyczny składający się z frontendu i backendu, znajdujący się pod konkretnym adresem URL, do którego dostęp uzyskujemy przez przeglądarkę internetową. Front aplikacji znajdujący się w przeglądarce (napisany np. w AngularJS, Angular 2+, React...) wysyła requesty na serwer, gdzie mamy backend napisany w Springu.

Tutaj pojawia się problem, ponieważ do uruchomienia takiego backendu potrzebujemy przynajmniej kawałka kodu stworzonego w interfejsie użytkownika. Jak wiadomo programowanie frontendu to zupełnie inna bajka i trzeba poświęcić trochę czasu aby się tego nauczyć. Szczególnie podczas początków nauki fajnie byłoby skupić się tylko na jednej warstwie. Jeśli zatem chcemy uczyć się programowania w Springu powinniśmy skupić się na warstwie backendowej, a wysyłanie reqeustów "zlecić" zewnętrznemu mechanizmowi. Na szczęście można tak zrobić.

Wymagania do tego rozdziału:
  • Podstawowa umiejętność programowania w Javie.
  • Znajomość narzędzia Maven w stopniu umożliwającym budowę projektu.
  • Podstawowa wiedza ze Springa.

Instalacja Postmana

Do wysyłania żądań http w stronę Springa nie potrzebujemy tworzyć kodu frontendu. Możemy w tym celu wykorzystać narzędzie wyspecjalizowane w wysyłaniu żądań i w odbieraniu odpowiedzi. Takim narzędziem jest Postman. Co więcej, możemy takie żądania zapisywać w celu wykorzystania ich w przyszłości, a nawet tworzyć kolekcje (zbiory) takich żądań. Ale po kolei...

Najpierw udajemy się na stronę, z której ściągniemy Postmana na dysk (Postman for Windows):
Klikamy w przycisk Download i wybieramy opcję zgodną z naszym systemem (32 lub 64 bit):
Postman dla Windows - Pobranie
Po zainstalowaniu programu możemy założyć konto, które pozwoli nam na zarządzanie workspace'ami, synchronizację danych pomiędzy urządzeniami, a także backup w chmurze Postmana.

Pierwsze uruchomienie

Pierwsze uruchomienie Postmana powinno zakończyć się pojawieniem widoku podobnego do poniższego:
Postman dla Windows - Pierwsze uruchomienie
Na obrazku widzimy po kolei:
(1) - Listę z wyborem metody http jaką będziemy wysyłać żądanie, np. GET, POST, PUT, itd.

(2) - Miejsce do wpisania adresu URL, na który będziemy wysłać żądanie, na przykład http://localhost:8080/api/items.

(3) - Przycisk do wysyłania żądania.

(4) - Miejsce, w którym zostanie wyświetlona odpowiedź http.

(5) - Zakładki z historią wysyłanych żądań oraz kolekcjami jakie możemy stworzyć, grupując nasze żądania.

Przygotowanie aplikacji na Spring Boot

Naszym celem będzie wysłanie żądania do aplikacji webowej, której backend został napisany w Springu. W tym celu musimy mieć zaprogramowany chociaż kawałek takiej aplikacji. Jeśli nie macie pod ręką swojego projektu, możecie ściągnąć przykładowy projekt z naszego Githuba:
Standardowo możecie go sklonować, albo po prostu ściągnąć zip-a. Jeśli nie wiecie jak klonujemy projekt w Gicie, to zerknijcie do naszego kursu Git - Pierwsze kroki.

Github - Projekt dla Postmana
Uwaga. W przypadku, gdy posiadasz własny projekt Spring Boot i potrafisz go uruchomić, możesz pominąć dalszą część tego paragrafu. Przejdź od razu do sekcji "Wysłanie requestu do aplikacji".
Projekt importujemy do naszego IDE (na przykładzie STS Eclipse):
STS Eclipse - Import projektu
STS Eclipse - Import projektu Maven
W ramach projektu mamy napisanych kilka metod w kontrolerze Springa - ItemController. W dwóch z nich założyliśmy breakpointa (create, read):
ItemController w Spring Boot starter.
Uruchamiamy projekt, pamiętając przy tym, że w projekcie ustawiliśmy port 8888 (port na którym będzie uruchomiona nasza aplikacja w Springu):
Uruchomienie przykładowego projektu Spring Boot

Wysłanie requestu do aplikacji

Przyszedł czas na wysłanie naszego pierwszego żądania do uruchomionej aplikacji. Przypominamy, że aplikacja z naszego Githuba startuje na porcie 8888. Z tego powodu to właśnie na ten port bedziemy wysyłać żądania. Jeśli macie własną aplikację uruchomioną na przykład na domyślnym porcie 8080, wówczas powinniście użyć swojego portu.

Tworzymy więc nasz pierwszy request z Postmanem - New > Request:
Postman - Pierwszy request
Ustawiamy nazwę requestu, na przykład - read (1) oraz opis, przykładowo - Get all items (2). Dodatkowo naciskamy przycisk Create Collection (3), aby stworzyć kolekcję (zbiór żądań które chcemy trzymać razem). Kolekcję nazwaliśmy JavAPPa - Przykłady.
Postman - Pierwszy request - Konfiguracja
Zapisaliśmy nasz żądanie i teraz musimy je skonfigurować. Kolejnym krokiem jest więc zdefiniowanie metody http (1) oraz adresu URL (2) dla naszego żądania read (3). Podczas tworzenia URL-a (2) wprowadzamy adres aplikacji oraz numer portu (po dwukropku):
Postman - Request GET
Klikamy w przycisk Send (1), który odpowiada za wysłanie naszego requesta do aplikacji Spring Boot. Po krótkiej chwili otrzymujemy odpowiedź (2). Jeśli korzystacie z aplikacji z naszego Githuba, to odpowiedź będzie zawierała przygotowaną po stronie Springa listę obiektów typu Item.
Postman - Request GET
Na koniec przyjrzyjmy się jeszcze, co się dzieje w naszej aplikacji po wysłaniu requesta. Korzystając z aplikacji z Githuba możecie założyć breakpointy tak jak my. Wówczas wykonanie programu zatrzyma się w breakponcie w metodzie, na którą wysłaliśmy żądanie:
Spring Boot - Breakpoint w metodzie read
To dlaczego uruchomiona została metoda read (1) nie wynika oczywiście z jej nazwy (ona może być dowolna, choć lepiej żeby miała związek z tym co robi metoda), ale z tego że nasz request został wysłany na adres api/items (2), a metoda jest oznaczona adnotacją GetMapping (3) (żądanie z Postmana wysłaliśmy właśnie metodą GET). Jeśli nadal jest to nie do końca jasne, to więcej o temacie dopasowania ścieżek piszemy w rozdziale Spring MVC - Mapowanie żądań HTTP (Request Mapping).

Aby kontynuować wykonanie programu, naciskamy F8 i w ten sposób przechodzimy do wywołania metody getItems w serwisie ItemServiceImpl. Tam widzimy, że metoda pobiera dane z bazy i zwraca odpowiedź. Odpowiedź jest zwracana do ItemController, a następnie jest wysłana przez sieć i wraca w formie obiektu JSON do Postmana.
Spring Boot - Breakpoint w metodzie getItems
Zobaczmy tą odpowiedź raz jeszcze:
Spring Boot - Breakpoint w metodzie getItems

Ćwiczenie

W ten sposób można dowolnie zmieniać, a następnie debugować kod Springa, wysyłając różne requesty. W ramach ćwiczenia dodaj do Postmana metodę POST, tak aby wywoływała ona metodę create, która znajduje się w kodzie klasy ItemController (w projekcie z Githuba). Metoda ta jest obecnie pusta (zwraca pustą odpowiedź), ale nic nie stoi na przeszkodzie, abyś zaimplementował tę metodę tak, by zapisała nowy item do bazy (baza H2 jest wbudowana w projekcie). Wtedy metoda getItems - po uruchomieniu opisanego przez nas żądania GET zwróci listę naszych itemów plus jeszcze jeden - Twój nowo dodany item.

Rozbudowane przykłady

Jak już wiecie aplikacja StartAPPa składa się z modułów, a każdy z tych modułów to aplikacja Spring Boot. Każda taka aplikacja działa niezależnie i dostarcza pełną funkcjonalność w danym zakresie, na przykład zapis danych z formularza do bazy, albo pobranie stronicowanych i posortowanych danych do tabeli.

W naszej strefie PREMIUM to Wy wybieracie, która aplikacja Was interesuje. Nie musicie też ściągać wersji z całym frontendem napisanym w AngularJS. Jeśli uczycie się Springa, to znajdziecie tam zestawy kolekcji Postman gotowych do uruchomienia zaraz po pobraniu i wtedy dostajecie tylko Springa. Pozwoli Wam to na zapoznanie się z kodem, który będziecie mogli przedebugować linia po linii, korzystając z Waszego IDE. Co więcej jest też opcja pobrania samego Springa z pełnym tutorialem (zawierającym również opis frontendu, ale bez kodu frontendu).

Kolekcje są dostępne przy wyborze opcji BACKEND i BACKEND MASTER:.
Spring Boot - Backend Master
Appa Notka. Nasze aplikacje zostały napisane z użyciem technik sprawdzonych w boju przez wielu doświadczonych programistów. Kod bliźniaczo podobny do naszego funkcjonuje w realnych aplikacjach, z których w tej chwili korzystają klienci zarówno w Polsce jak i w wielu innych krajach na świecie. Jeśli myślisz o karierze programisty, albo może już ją prowadzisz, ale nie poruszasz się zbyt pewnie po Springu, to korzystanie z takich gotowców pozwoli Ci czerpać najlepszą wiedzę u samego źródła. Oczywiście kod napisany jest z wykorzystaniem typowych mechanizmów Springa takich jak Spring Framework, Spring Boot, Spring Data. Możesz dokładnie przyjrzeć się każdej linijce kodu, każdemu obiektowi i dowolnie go zmieniać, tak samo zresztą jak możesz zmieniać dane wysyłane z Postmana.

Import kolekcji

Jak wykonać import kolekcji? To bardzo proste! Weźmy za przykład Tabelę Zaawansowaną. Po rozpakowaniu i wejściu do głównego katalogu zobaczycie taki zestaw plików:
Spring Boot - Tabela Zaawansowana zestaw plików
Oczywiście w katalogu src znajdziecie wszystkie pliki projektowe, pom.xml to plik Mavena, ale nas najbardziej interesuje plik zaznaczony na czerwono: JavAPPa - Tabela Zaawansowana.postman_collection.json. Zawiera on przygotowaną kolekcję Postman. Importowanie kolekcji przygotowanej w pliku JSON wymaga 2 kroków. Klikamy w przycisk Import (1), a następnie - albo wybieramy plik poprzez wskazanie go na dysku, albo wrzucamy go bezpośrednio do okienka drag and dropem (2):
Spring Boot - Tabela Zaawansowana zestaw plików
To wszystko! Teraz z lewej strony możecie rozwinąć kolekcję, aby zobaczyć jakie requesty przygotowaliśmy. W przypadku Tabeli Zaawansowanej są to cztery requesty, które możecie wysłać do tej aplikacji Spring Boot:
  • Pobranie kolumn tabeli - Get all columns
  • Pobranie rekordów dla pierwszej strony (jak również dla kolejnych - wymagane ustawienie odpowiedniego parametru) - Search for all records
  • Wyszukiwanie rekordu po podanym identyfikatorze - Search for record with name: Appa 70
  • Usunięcie rekordu po podanym identyfikatorze - Delete item with id: 10
Spring Boot - Tabela Zaawansowana zestaw plików
Wybieramy request, który nas interesuje, na przykład "Pobranie rekordów dla 1 strony" i klikamy Open in builder. W efekcie otrzymamy uzupełnione dane we wszystkich wymaganych polach:
Spring Boot - Tabela Zaawansowana zestaw plików
Znamy już ten widok z tego rozdziału prawda? :) Nie pozostaje nam nic innego jak nacisnąć przycisk Send i rozpocząć zabawę ze Springiem.
Oprócz aplikacji Tabela Zaawansowana, bardzo polecamy aplikację Formularz Zaawansowany, gdyż stosunek ilości materiału do ceny wypada najbardziej optymalnie. Udostępniony kod Formularz Zaawansowanego pozwala na naukę takich zagadnień jak:
  • Pobieranie danych w celu zainicjowania list słownikowych (kategorie, atrybuty, typy, statusy).
  • Tworzenie obiektów i zapis do bazy nowych rekordów, a nawet obrazka.
  • Modyfikacja zapisanych wcześniej danych.
  • Pobieranie rekordu po id.
  • Pobieranie wszystkich rekordów.
Powodzenia! Linki
https://www.getpostman.com/downloads

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy:
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .