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 driverdependencyler eklenmeli. - Maven dependency management sistemini kullanarak tüm dependencyleri install edin.
- Uygulamanızı
9000portundan 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,daopaketlerini mutlaka eklemelisiniz. entitypaketinin altınaMovieadında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, name, directorName, rating, releaseDateisminde 5 tane değişken oluşturun.entitypaketinin altınaActoradında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, firstName, lastName, gender, birthDateisminde 5 tane değişken oluşturun.MovieveActorsı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.propertiesdosyanızı kullanarak veritabanı bağlantınızı kurun.logging.level.org.hibernate.SQL, logging.level.org.hibernate.orm.jdbc.bindopsiyonları ile oluşan sqlleri inceleyin.
- Dao paketi altında
MovieDaoveActorDaoisminde 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
CRUDişlemlerini yapabilmeli. - Service paketinin içine CRUD işlemlerini tanımlayabileceğiniz interface ve sınıfları yazın.
controllerpaketi altındaMovieControllerveActorControlleradı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
exceptionspaketi 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-validationdependency ile Entityler için validasyon ekleyebilirsiniz.- Her Controller
@Slf4jile işaretlenmelidir. Endpoint bir şekilde hata döndüğündeerror logubasılmalı. - validation işlemleri controller sınıfı içinde kalmamalı.
utilpaketi altındaHollywoodValidationisimli 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.