Projeyi öncelikle forklayın ve clone edin. Daha sonra projeyi IntellijIDEA kullanarak açınız. README.md dosyasını dikkatli bir şekilde okuyarak istenenleri yapmaya çalışın. Proje sayımız ilerledikçe proje yönetimimizi kolaylaştırmak adına projelerimizi belli klasör kalıplarında saklamak işimizi kolaylaştırmak adına iyi bir alışkanlıktır. Örnek bir Lokasyon: Workintech/Sprint_1/Etud.
- Spring Initializr kullanarak bir Spring Boot projesi oluşturun.
- İçerisinde
Spring Web, Spring Data JPA, Lombok, Postgresql driver
dependencyler eklenmeli. - Maven dependency management sistemini kullanarak tüm dependencyleri install edin.
- Uygulamanızı
9000
portundan ayağa kaldırın. - Filmler için rest api dizayn etmeniz istenmektedir.
- Amacımız veritabanına ekleme yapabileceğimiz bir movie API'yı hazırlamak.
- Bu Api'yi oluştururken error handling ve validation kurallarına uymalıyız.
- Dependency Injection kurallarına uymalıyız.
- main metodunuzun olduğu paket altında
controller
,entity
,service
,dao
paketlerini mutlaka eklemelisiniz. entity
paketinin altınaMovie
adında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, name, directorName, rating, releaseDate
isminde 5 tane değişken oluşturun.entity
paketinin altınaActor
adında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, firstName, lastName, gender, birthDate
isminde 5 tane değişken oluşturun.Movie
veActor
sınıfları arasında many-to-many bir ilişki tanımlanmalı.- Lombok ve JPA annotationlarını bu sınıflara uygulayınız.
application.properties
dosyanızı kullanarak veritabanı bağlantınızı kurun.logging.level.org.hibernate.SQL, logging.level.org.hibernate.orm.jdbc.bind
opsiyonları ile oluşan sqlleri inceleyin.
- Dao paketi altında
MovieDao
veActorDao
isminde iki interface oluşturun. - içerisinde şu işlemleri yapıcak methodları tanımlamalısınız.
- Bu iki interface de movie ve actor için
CRUD
işlemlerini yapabilmeli. - Service paketinin içine CRUD işlemlerini tanımlayabileceğiniz interface ve sınıfları yazın.
controller
paketi altındaMovieController
veActorController
adında 2 tane controller yazmalısınız.- Amacımız CRUD işlemlerini tanımlayan endpointler yazmak.
- [GET]/workintech/movies => tüm movie listini dönmeli.
- [GET]/workintech/movies/{id} => İlgili id deki burger objesini dönmeli.
- [POST]/workintech/movies/ => Bir adet movie objesi ve bir adet actor objesi alır ve ikisini de veritabanına ilişkileri ile birlikte kaydeder.
- [PUT]/workintech/movies/{id} => İlgili id deki movie objesinin değerlerini yeni gelen data ile değiştirir.
- [DELETE]/workintech/movies/{id} => İlgili id değerindeki movie objesini veritabanından siler.
- [GET]/workintech/actors => tüm actors listini dönmeli.
- [GET]/workintech/actors/{id} => İlgili id deki actor objesini dönmeli.
- [POST]/workintech/actors => Bir adet movie objesi ve bir adet actor objesi alır ve ikisini de veritabanına ilişkileri ile birlikte kaydeder.
- [PUT]/workintech/actors/{id} => İlgili id deki actor objesinin değerlerini yeni gelen data ile değiştirir.
- [DELETE]/workintech/actors/{id} => İlgili id değerindeki actor objesini veritabanından siler.
- Her endpointin hata fırlatabileceği senaryolar düşünülmeli
exceptions
paketi altına bu Error sınıfları oluşturulmalı. - ApiException isminde bir custom exception oluşturulmalı ve runtimeexception dan türetilmeli. İçinde instance variable olarak HttpStatus yer almalı.
- Error Handling Global bir merkezden yönetilmeli. Controller sınıflarının altında olmamalı.
spring-boot-starter-validation
dependency ile Entityler için validasyon ekleyebilirsiniz.- Her Controller
@Slf4j
ile işaretlenmelidir. Endpoint bir şekilde hata döndüğündeerror logu
basılmalı. - validation işlemleri controller sınıfı içinde kalmamalı.
util
paketi altındaHollywoodValidation
isimli bir sınıf oluşturunuz. Validation işlemlerini buraya alınız.
- Codepen üzerinden veya bir React uygulaması oluşturarak Spring Boot ile yazdığımız projeye request atmayı deneyiniz. cors hatasını nasıl çözebiliriz.