Backend REST API do zarządzania biblioteką:
- CRUD książek (lista/dodawanie/edycja/usuwanie)
- Rejestracja i logowanie użytkowników
- Autoryzacja JWT (Bearer token)
- Hashowanie haseł (BCrypt)
- Relacyjna baza danych (H2, tryb plikowy)
- Testy JUnit + MockMvc + spring-security-test
- Przykład użycia RestTemplate
- Java 17
- Spring Boot
- Spring Web, Spring Data JPA
- Spring Security + JWT
- H2 Database
- JUnit 5, MockMvc
- RestTemplate
mvn spring-boot:runAplikacja startuje na:
http://localhost:8080Health check:
GET /api/healthH2 (plikowa) — dane zapisują się w folderze:
./dataJDBC URL:
jdbc:h2:file:./data/librarydbKonsola H2:
http://localhost:8080/h2-consoleRejestracja
curl -i -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"filip","password":"haslo123"}'Logowanie (zwraca token JWT w polu message)
curl -s -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"filip","password":"haslo123"}'Pobierz listę książek
curl -i http://localhost:8080/api/books \
-H "Authorization: Bearer <TOKEN>"Dodaj książkę
curl -i -X POST http://localhost:8080/api/books \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"title":"Wiedzmin","author":"Sapkowski","publishedYear":1993,"isbn":"123"}'Edytuj książkę
curl -i -X PUT http://localhost:8080/api/books/1 \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"title":"Wiedzmin (edycja)","author":"Sapkowski","publishedYear":1994,"isbn":"123"}'Usuń książkę
curl -i -X DELETE http://localhost:8080/api/books/1 \
-H "Authorization: Bearer <TOKEN>"Endpoint demonstrujący użycie RestTemplate (wewnętrzne wywołanie /api/health):
GET /api/integration/health-checkcurl -i http://localhost:8080/api/integration/health-checkmvn test- Hasła przechowywane jako hash BCrypt
- Endpointy
/api/books/**wymagają JWT - Ochrona przed SQL Injection: Spring Data JPA (brak ręcznego SQL i konkatenacji)
- Stateless session (JWT, brak sesji serwerowej)