Skip to content

filipwierzejewski/library-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Library API (Spring Boot)

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

Tech stack

  • Java 17
  • Spring Boot
  • Spring Web, Spring Data JPA
  • Spring Security + JWT
  • H2 Database
  • JUnit 5, MockMvc
  • RestTemplate

Uruchomienie

mvn spring-boot:run

Aplikacja startuje na:

http://localhost:8080

Health check:

GET /api/health

Baza danych

H2 (plikowa) — dane zapisują się w folderze:

./data

JDBC URL:

jdbc:h2:file:./data/librarydb

Konsola H2:

http://localhost:8080/h2-console

Autoryzacja (JWT)

Rejestracja

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"}'

Endpointy Books (wymaga JWT)

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>"

RestTemplate (przykład)

Endpoint demonstrujący użycie RestTemplate (wewnętrzne wywołanie /api/health):

GET /api/integration/health-check
curl -i http://localhost:8080/api/integration/health-check

Testy

mvn test

Bezpieczeństwo

  • 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)

About

Spring Boot REST API for library management with JWT authentication, BCrypt password hashing, H2 database and JUnit tests.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages