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.
- Var olan spring projeniz içerisine aşağıdaki dependencyleri ekleyiniz. Var olan dependencyleri sakın çıkarmayın.
- İçerisinde
Spring Web, Spring Data JPA, Lombok, Postgresql driver
dependencyler eklenmeli. - Maven dependency management sistemini kullanarak tüm dependencyleri install edin.
- Tüm tablolarınızı fsweb şeması altında oluşturunuz
- Uygulamanızı
8080
portundan ayağa kaldırın. - Meyve ve sebzeler için bir rest Api oluşturacağız.
- ana paketiniz altında
controller
,services
,dao
,entity
,exceptions
isminde 5 adet daha paket oluşturunuz. . entity
paketinin altınaFruit
veVegetable
isimli iki tane sınıf oluşturunuz.Fruit
sınıfıid, name, price, FruitType
isimli 4 fielda sahip olmalı. FruitType enum olmalı(SWEET, SOUR değerlerini alabilir.)Vegetable
sınıfıid, name, price, isGrownOnTree
isimli 4 fielda sahip olmalı.Fruit
veVegetable
sınıfları project lombok ve Jpa annotationlarını kullanmalıdır.
- dao paketi altına
FruitRepository
veVegetableRepository
interfacelerini oluşturmalısınız. - Bu sınıflarda tüm crud işlemleri yapılabilmeli.
- Bunların dışında hem FruitRepository için hem VegetableRepository için "ücrete göre azalan sırada" tüm fruit ve vegatables sıralayan bir method yazmalısınız.
- Hem FruitRepository için hem VegetableRepository için "ücrete göre artan sırada" tüm fruit ve vegatables sıralayan bir method yazmalısınız.
- Hem FruitRepository için hem VegetableRepository yollanan bir parametre name içerisinde geçiyorsa geçtiği tüm kayıtları dönen bir metod yazmalısınız.
- service paketi altına
FruitService
veFruitServiceImpl
sınıflarını oluşturmalısınız. - service paketi altına
VegetableService
veVegetableServiceImpl
sınıflarını oluşturmalısınız. - Dao sınıfları ile arasında
Dependency Injection
ilişkisini kurmalısınız. - Tüm dao methodları Override edilmeli.
FruitController
veVegetableController
isimli 2 tane controller yazmalısınız.- Amacımız CRUD işlemlerini tanımlayan endpointler yazmak.
- [GET]/workintech/fruits => tüm fruits kayıtlarını price göre artan sırada dönmeli.
- [GET]/workintech/fruits/{id} => İlgili id deki fruit objesini dönmeli.
- [GET]/workintech/fruits/desc => tüm fruit kayıtlarını price göre azalan sırada dönmeli.
- [POST]/workintech/fruits => Bir adet fruit objesini id değerine göre ya veri tabanına ekler. Ya da var olan değeri update eder.
- [POST]/workintech/fruits/{name} => Bir adet name değişkeni alır ve fruit tablosu içerisinde geçen tüm fruitleri döner
- [DELETE]/workintech/fruits/{id} => İlgili id değerindeki fruit objesini listeden siler.
VegetableController
- [GET]/workintech/vegetables => tüm vegetables kayıtlarını price göre artan sırada dönmeli.
- [GET]/workintech/vegetables/{id} => İlgili id deki vegetable objesini dönmeli.
- [GET]/workintech/vegetables/desc => tüm vegetables kayıtlarını price göre azalan sırada dönmeli.
- [POST]/workintech/vegetables => Bir adet vegetables objesini id değerine göre ya veri tabanına ekler. Ya da var olan değeri update eder.
- [POST]/workintech/vegetables/{name} => Bir adet name değişkeni alır ve vegetable tablosu içerisinde geçen tüm vegetable değerlerini döner
- [DELETE]/workintech/vegetables/{id} => İlgili id değerindeki vegetable objesini listeden siler.
- PathVarible olarak id değeri 0'dan küçük yollanırsa api hata döndürmelidir.
- PathVarible olarak id değeri veritabanında yoksa api hata döndürmelidir.
- Insert/Update işlemlerinde eksik data yollanırsa api hata döndürmelidir.
- Bunların dışında beklenmeyen bir hata olduğunda tüm hataları handle edebilecek global bir hata yakalama sistemi de olmalı.
- Error Handling Global bir merkezden yönetilmeli. Controller sınıflarının altında olmamalı.
@Slf4j
hata olduğunda servera log düşürülmelidir.- Bu kontrolleri yapan sınıflar
exceptions
vevalidations
paketleri altına eklenebilir.
- Bir tane apinizin dönüş değerinde işlem başarılıysa hem objenin kendisini hem de işlemin başarılı olduğuna dair bir mesaj ekleyiniz.