Postman i Spring - Wysyłanie requestów

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 Angular, React czy Vue) 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):
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 (w zależności od wersji, detale interfejsu użytkownika mogą się nieco różnić):
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żesz go sklonować, albo po prostu ściągnąć zip-a. Jeśli nie wiesz, jak klonujemy projekt w Gicie, to zerknij 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:
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 będziemy wysyłać żądania. Jeśli masz własną aplikację uruchomioną na przykład na domyślnym porcie 8080, wówczas powinieneś 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 korzystasz 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żesz 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 requestów HTTP.

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. Topowe Materiały
Postman Learning Center
Download Postman
Baeldung: Testing Web APIs with Postman Collections
Baeldung: Basic Authentication With Postman

Udemy: [NEW] Spring Boot 3, Spring 6 & Hibernate for Beginners  —  polskie napisy

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: stackshare
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 .


Pozycjonowanie stron: Grupa TENSE