Skip to content

A Spring Boot REST API project that demonstrates CRUD operations for books and authors, including validation, DTO mapping with MapStruct, and layered architecture.

Notifications You must be signed in to change notification settings

sedabasaran/book-author-crud-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Book-Author CRUD API

Java & Spring Boot ile geliştirilmiş bu proje, kitaplar ve yazarlar arasında ilişki kurarak, her iki varlık üzerinde de kapsamlı (Create, Read, Update, Delete) işlemleri destekleyen RESTful bir API sunar.

🚀 Özellikler

  • ✅ Kitap ve yazar CRUD işlemleri
  • ✅ Yazar-kitap ilişkisi (Many-to-One)
  • ✅ DTO kullanımı ve veri dönüşümleri (MapStruct)
  • ✅ Spring Validation ile giriş doğrulama
  • ✅ Sayfalama ve sıralama desteği
  • ✅ Unit Test (Mockito)
  • ✅ Integration Test (MockMvc)

🛠️ Kullanılan Teknolojiler

Teknoloji Açıklama
Java 17 Ana programlama dili
Spring Boot Uygulama çatısı
Spring Data JPA ORM (veritabanı işlemleri)
PostgreSQL Veritabanı
Lombok Boilerplate kod azaltma
MapStruct DTO ↔ Entity dönüşümleri
JUnit & Mockito Test çatısı
Maven Proje yönetimi ve bağımlılıklar

📁 Projede Neler Var? ✅ 1. Entity'ler

  • Author ve Book entity’leri oluşturuldu.
  • @ManyToOne ilişkisi kuruldu (Bir yazarın birden fazla kitabı olabilir).

✅ 2. DTO Katmanı

  • Dışarıya verilecek veri şekli için BookDto ve AuthorDto yazıldı.

✅ 3. MapStruct ile Dönüşümler

  • BookMapper, AuthorMapper ile DTO ↔ Entity dönüşümleri otomatik hale getirildi.

✅ 4. Service & Impl Katmanı

  • BookService, AuthorService interface’leri ve implementasyonları yazıldı.
  • CRUD işlemleri servis katmanında gerçekleştirildi.

✅ 5. Controller Katmanı

  • REST endpoint'ler oluşturuldu:
    • GET /api/books, POST /api/books, PUT /api/books/{id}, DELETE /api/books/{id}
    • Aynısı Author için de yapıldı.

✅ 6. Validasyon

  • DTO'lara @NotBlank, @Size, @NotNull gibi bean validation anotasyonları eklendi.
  • Hatalı isteklerde 400 Bad Request dönülüyor.

✅ 7. Pagination & Sorting

  • Kitapları sayfalı ve sıralı listeleme (/api/books?page=0&size=5&sortBy=title&sortDir=asc)

✅ 8. Unit Test (JUnit + Mockito)

  • BookServiceImpl için mock testler yazıldı.
  • Mockito ile repository ve mapper bağımlılıkları taklit edildi.

✅ 9. Integration Test (MockMvc)

  • BookController ve AuthorController için gerçek HTTP request simülasyonları yapıldı.
  • Doğru yanıtlar, validasyon hataları ve status code'lar test edildi.

📬 API Örnekleri

  • GET /api/books – Tüm kitapları getirir
  • POST /api/books – Yeni kitap ekler
  • PUT /api/books/{id} – Var olan kitabı günceller
  • DELETE /api/books/{id} – Kitap siler
  • GET /api/books?page=0&size=5&sortBy=authorId&sortDir=asc - Kitap pageable

🚀 Nasıl Çalıştırılır?

Projeyi klonla

git clone https://github.com/sedabasaran/book-author-crud-api.git

Maven ile çalıştır

cd book-author-crud-api mvn clean install mvn spring-boot:run Veritabanı: PostgreSQL (application.properties içinde bağlantı ayarları var)

🧪 Test Çalıştırma bash

Tüm testleri çalıştır

mvn test

📸 Postman API Testleri

** Kitap Ekleme **

post-book

** Yazarları Listeleme **

get-authors

** Kitap Listeleme **

get-books

** Kitapları Listeleme (Pageable ile) **

pageable

** Veritabanı Kitap Kayıtları **

postgre-book

Eğer bu projeyi beğendiysen ⭐ bırakmayı unutma 😊
Her türlü öneri ve katkıya açığım!

About

A Spring Boot REST API project that demonstrates CRUD operations for books and authors, including validation, DTO mapping with MapStruct, and layered architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages