Spring, Maven, Postman, Debugger

Podobne dokumenty
Spring Web MVC, Spring DI

Programowanie Komponentowe WebAPI

Programowanie zespołowe

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

DOKUMENTACJA INTERFEJSU API - HTTPS

Git, Bitbucket, IntelliJ IDEA

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Załącznik 1 instrukcje instalacji

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Platformy Technologiczne

Podręcznik Integracji

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Języki programowania wysokiego poziomu WWW

Konfiguracja konta pocztowego w Thunderbird

Komunikacja międzysystemowa

Instrukcja instalacji

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Programowanie w Internecie

Ministerstwo Finansów

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Załącznik 1 instrukcje instalacji

Wstęp do testów integracji systemów

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Technologie internetowe

Generatory pomocy multimedialnych

Wybrane działy Informatyki Stosowanej

Tutaj znajdziesz Odpowiedź na: Najczęściej Spotykane Problemy Najczęściej zadawane Pytania

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Aktualizacja SMSFall v Data publikacji:

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

Dokumentacja Techniczna. Dokumentacja techniczna usługi płatności mobilnych

Tomasz Greszata - Koszalin

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Wybrane działy Informatyki Stosowanej

Specyfikacja techniczna. mprofi Interfejs API

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Ministerstwo Finansów

Instrukcja użytkownika

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Dokumentacja REST API v 3.0

World Wide Web? rkijanka

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM

Program szkolenia: REST i Microservices w PHP

Konspekt pracy inżynierskiej

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Dokumentacja. Wersja: 1.5 Ostatnio zmodyfikowano: Strona 1

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Instrukcja laboratoryjna

PayPo API v.2.0. Dokument zawiera specyfkaccę techniczną REST API PayPo.pl w wersci 2.0. Wersja dokumentu. Wykaz zmian

JAX-RS czyli REST w Javie. Adam Kędziora

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

DOKUMENTACJA TECHNICZNA SMS API MT

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Tworzenie oprogramowania

Katalog książek cz. 3: Web Service

Przygotowanie środowiska Java do prawidłowej obsługi podpisu elektronicznego w epuap

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight.

PHP: bazy danych, SQL, AJAX i JSON

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Zaawansowane aplikacje internetowe - laboratorium

Praca w sieci równorzędnej

Ogólnopolskie Repozytorium Prac Dyplomowych

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Instrukcja użytkowania oprogramowania SZOB PRO

Platformy Technologiczne

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

Poniższy diagram prezentuje scenariusz subskrypcji aplikacji do usługi CallEventNotifications.

Dokumentacja modułu Woocommerce

HermesEX. Dokumentacja serwisowa v

Informacje o aktualizacji oprogramowania

Funkcje backendu konfiguratora. Warszawa,

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Instrukcja obsługi Multiconverter 2.0

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Instrukcja obsługi DHL KONWERTER 1.6

Archiwum DG 2016 PL-SOFT

Podręcznik użytkownika

Mazowiecki Elektroniczny Wniosek Aplikacyjny

InPost PACZKOMATY. (Moduł Magento 2) v Strona 1 z 18

Procedura aktualizacji systemu TelkomBud (od wersji 139.0)

Laboratorium nr 4 - Badanie protokołów WWW

Modelowanie obiektowe - Ćw. 1.

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Programowanie. Dodatek - uzupełnienie wiadomości. mgr inż. Krzysztof Szwarc. Sosnowiec,

Wdrożenie modułu płatności eservice. dla systemu Magento

INFORMATOR TECHNICZNY WONDERWARE

Transkrypt:

Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 4 Spring, Maven, Postman, Debugger Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2

Technologie Technologie / narzędzia będące przedmiotem laboratorium: Projekt PdfGenerator Proszę pobrać aplikację PdfGenerator na dysk własnego komputera. Po rozpakowaniu pliku należy na platformie Bitbucket utworzyć nowe repozytorium. Należy zsynchronizować nowy projekt z repozytorium, które zostało wcześniej utworzone na platformie. Maven Maven jest to narzędzie, które automatyzuje budowę oprogramowania na platformę Java. W projekcie PdfGenerator znajduje się plik pom.xml (Project Object Model). Ten plik łączy projekt w Javie i Mavena. W pliku pom.xml zapisana jest całkowita konfiguracja związana z projektem, opis jak ma być budowany, konfiguracja pluginów itd. Jedyne co musi zawierać plik pom.xml to koordynaty artefaktu czyli groupid (paczka, odwrócona domena), artifactid (przeważnie jest nazwą projektu). Istotne jest to, że do takiego pliku można dodawać zależności (dependencies). Podczas uruchomienia projektu zależności zostaną pobrane i będziemy mogli korzystać z nowych bibliotek w projekcie. W projekcie PdfGenerator w pliku pom.xml została dodana biblioteka itext w celu umożliwienia generowania dokumentów pdf. Biblioteka została pobrana z repozytorium Mavena i skopiowana do pliku pom.xml. 1

Biblioteka itext w repozytorium Mavena. Biblioteka itext dodana do pliku pom.xml. 2

Integracja IntelliJ IDEA z Maven Proszę pobrać archiwum binarne Mavena, a następnie je rozpakować. W menu nawigacyjnym proszę wybrać opcję Add Configuration... Następnie dodajemy konfigurację dla Mavena. Sytuacja została przedstawiona na poniższym screenie: Przechodzimy do zakładki Parameters (Name: spring-boot, Command line: spring-boot:run). 3

Przechodzimy do zakładki General, odznaczamy Use project settings. W Maven home directory dodajemy lokalizację rozpakowanego archiwum binarnego Maven a. Następnie klikamy Apply, OK. 4

Po wstępnej konfiguracji możemy uruchomić projekt z poziomu menu nawigacyjnego. Uruchomienie projektu zostało przedstawione na poniższym screenie: Projekt powinien się zbudować, a w logach powinna być informacja, że serwer uruchomił się. Przykładowy wpis z logów po prawidłowym uruchomieniu: Protokół HTTP HTTP - (Hypertext Transport Protocol) jest protokołem przesyłania dokumentów hipertekstowych. Zadaniem stron WWW jest publikacja danych, a protokół HTTP właśnie to umożliwia. HTTP jest użytecznym protokołem ponieważ udostępnia znormalizowany sposób komunikowania się komputerów ze sobą. Określa on formę żądań (request) klienta (np.: przeglądarka WWW), oraz formę odpowiedzi (response) serwera na te żądania. 5

JSON JOSN - (JavaScript Object Notation) jest lekkim formatem wymiany danych. Format ten jest formatem tekstowym bazującym na podzbiorze JavaScript. Jest formatem niezależnym od konkretnego języka. Przykładowy obiekt user zapisany w formacie JSON: "user": { "id": 7, "firstname": "Tomasz", "lastname": "Nowak", "salary": [{ "year": 2015, "value": 12000, "currency": "PLN" }, { "year": 2016, "value": 33000, "currency": "PLN" }, { "year": 2017, "value": 22000, "currency": "USD" }] } REST REST - jest to akronim od Representational State Transfer. W przypadku REST mamy adresy URL, które są pewnego rodzaju identyfikatorami. Wysyłamy na te adresy zapytania (które mogą być JSONem). To co powinno się wydarzyć jest określone przez użytą metodę protokołu HTTP (metody CRUD zostały zaprezentowane w poniższej tabeli). Odpowiedź serwera może być również w formacie JSON (typ jest zależny od tego jakiego typu odpowiedzi zażyczy sobie klient). Takiego typu API sprawdza się wyśmienicie w przypadku systemów, które powinny być dostępne dla możliwie dużej ilości klientów. 6

Zestawienie standardowych żądań HTTP (metody CRUD) Działanie Żądanie HTTP Działanie usługi Przykład Create POST Umożliwia utworzenie [POST] nowego obiektu http://127.0.0.1:8080/users danych Read GET Umożliwia pobieranie [GET] obiektu danych http://127.0.0.1:8080/users/1 wskazanego w adresie URL Update PUT Umożliwia [PUT] uaktualnienie obiektu http://127.0.0.1:8080/users/2 danych wskazanego w adresie URL Delete DELETE Umożliwia [DELETE] usunięcie obiektu http://127.0.0.1:8080/users/1 danych wskazanego adresie URL Zestawienie podstawowych kodów odpowiedzi HTTP (informacja zwracana przez serwer) Kod Opis Znaczenie 200 OK Zawartość żądanego zasobu 201 Created Zasób został zapisany na serwerze 400 Bad Request Nieprawidłowe zapytanie, żądanie nie może być obsłużone przez serwer z powodu błędnej składni zapytania 404 Not Found Serwer nie odnalazł zasobu według podanego URL 500 Internal Server Error Wewnętrzny błąd serwera, serwer napotkał niespodziewane trudności (jeśli pojawią się nieobsłużone wyjątki w Javie wówczas serwer zwróci taki kod błędu) Postman Postman - jest to wtyczka dla przeglądarki Google Chrome przy pomocy, której można testować żądania HTTP. Proszę dodać aplikację Postman do przeglądarki (link do rozszerzenia) Google Chrome oraz ją 7

uruchomić. Zanim rozpoczniemy pracę z Postmanem należy wcześniej uruchomić projekt PdfGenerator. Po uruchomieniu aplikacji nasz serwer będzie gotowy do działania - informacja o tym czy serwer działa, dostępna będzie po adresem: http://127.0.0.1:8080/api/server-test. Ładne formatowanie JSONa zostało uzyskane po instalacji wtyczki JSONView. W kontrolerze PdfGeneratorApiController znajdują się 3 metody restowe: servertest - testuje działanie serwera, findall - zwraca listę zapisanych plików, createfile - generuje plik PDF i zapisuje go na dysku. Wykonajmy test metody createfile przy pomocy aplikacji Postman. W pierwszej kolejności ustawiamy nagłówki, typ żądania i adres URL (dokładnie tak jak zostało to przedstawione na poniższym screenie): 8

W następnej kolejności ustawiamy Body. Proszę zauważyć, że w Body żądania należy wprowadzić JSONa, który posiada dokładnie takie same nazwy pól jak klasa UserDataDto, która opatrzona jest adnotacją @RequestBody w parametrze metody kontrolera. Następnie klikamy Send. W odpowiedzi serwera powinniśmy dostać kod 201 oraz JSONa z danymi o zapisanym pliku. Sytuację przedstawia poniższy screen: 9

Pozostałe metody kontrolera PdfGeneratorApiController proszę przetestować w własnym zakresie. Adnotacje w Springu Adnotacje są wskazówkami dla Springa jak ma traktować poszczególne pola, metody czy klasy i dzięki temu jest w stanie samodzielnie tworzyć Beany (czyli obiekty, którymi jest w stanie zarządzać). Adnotacje, które dodajemy przed klasę nazywamy w Springu stereotypami. Wyróżniamy cztery podstawowe stereotypy: @Component - używamy najczęściej do klas, które są pomocnicze i nie oferują elementów logiki biznesowej, @Service - wskazuje, że klasa jest serwisem (oferuje logikę biznesową), @Repository - wskazuje, że klasa pozwala na dostęp do danych, @Controller - oznaczamy nią kontrolery. Wstrzykiwanie zależności w Springu (DI) Wstrzykiwanie zależności w springu (w uproszczeniu): @Autowired private FileService fileservice; 10

jest równoważne z: private FileService fileservice = new FileServiceImpl(); Po wstrzyknięciu przy pomocy adnotacji @Autowired obiekt jest gotowy do działania - od razu mamy dostęp do jego metod. Testowanie serwera za pomocą klienta Proszę pobrać aplikację PdfGeneratorClient.jar na dysk własnego komputera oraz ją przetestować. Podczas testów proszę analizować logi serwera. Debugowanie Debugowanie - proces systematycznego redukowania liczby błędów w oprogramowaniu. Debugger w IntelliJ IDEA Proszę ustawić tzw. breakpointy (za pomocą myszy) w klasie ResourceDAO. 11

Przed uruchomieniem aplikacji w trybie debug należy zatrzymać wcześniej uruchomioną aplikację. Następnie wybieramy z menu nawigacyjnego Run ï Debug spring-boot. Przy pomocy aplikacji Postman proszę wywołać usługę findall(), która znajduje się w klasie PdfGeneratorApiController. Po wywołaniu usługi przechodzimy do zintegrowanego środowiska programistycznego. Na powyższym screenie można zwrócić uwagę, że mamy dostęp do zmiennych, które są przetwarzane 12

w pętli. Sam debugger wiele rzeczy wykonuje za nas. Daje nam możliwość sprawdzenia wartości zmiennych oraz czy algorytm został przez nas prawidłowo zaimplementowany (krok po korku). Czy wiesz, że... Czy wiesz, że doświadczeni programiści korzystają z metody gumowej kaczuszki podczas debugowania kodu? Jeśli formalne metody debugowania kodu zawiodą można sięgnąć po nieformalne metody. Nieformalna metoda debugowania kodu: Proszę umieścić gumową kaczkę (lub inny przedmiot nieożywiony) w pobliżu komputera. Następnie należy tłumaczyć (na głos) swojej kaczce kod (linia po linii) jednocześnie omawiając działanie algorytmu, który zaimplementowaliśmy. Podczas takiej konwersacji powinny wyjść na jaw błędy, które popełniliśmy. Metoda uznawana jest za skuteczny sposób na przyśpieszenie rozwiązywania problemów oraz jest wersją myślenia na głos. 13