06

Tem

2015

Spring 4 ile Restful Web Servis Örneği

Spring 4 ile Restful web servis geliştirmeyi basit bir örnek üzerinden anlatmaya çalışacağım. Spring ile birlikte ORM olarak Hibernate kullanacağız. Geliştirme sürecinde Intellij Idea kullandım, daha önceleri Eclipse kullanıyordum. Eclipse’ten Intellij’e geçiş süreci biraz sıkıntılı olsa da alıştıktan sonra bir daha Eclipse kullanmamaya karar verdim.

Projeyi tamamladığımız da veritabanımıza yeni kitap ekleyebildiğimiz veya silebildiğimiz aynı zamanda  servislerimiz ile birlikte kayıtlı kitaplarımıza liste olarak  eriştiğimiz servislerimiz olacak. Web servisimiz isteklerimizi  karşılık bize json formatında cevaplar döndürecek. Dönen cevaplara örnek olarak liste istediğimize karşı döndürdüğü cevabı aşağıya örnek olarak koyuyorum. Veritabanında kayıtlı 1 adet kitap olduğu için tek sonuç döndürüyor.

bookService

Intellij Idea ile projemizi Maven projesi olarak oluşturuyoruz. Projemizi oluşturduktan sonra File menüsünden Project Structure ı seçiyoruz. Yan menüden Modules kısmına gelip “+” ya tıklayıp web i seçiyoruz. Web modülünü eklememiz önemli çünkü Spring ayar dosyamızı bu klasör altındaki WEB-INF içerisinde tutuyoruz.

MavenProject

Intellij Idea ile projemizi oluşturduktan sonra dosya dizinin aşağıdaki gibi olması gerekiyor. Projeyi Maven ile oluşturduğum için proje dosyaları arasında pom.xml dosyası da mevcut. Spring, Hibernate ve diğer gerekli kütüphaneleri çekebilmeniz için pom.xml dosyasını da paylaşacağım.

springProject

pom.xml

web.xml

web.xml dosyamızda Spring ayar dosyamız olan spring-config.xml dosyamızı tanımlamamız gerekiyor. Bu tanımlama ile gelen istekler Spring tarafından dikkate alınıp, cevaplanacak.

spring-config.xml

spring-config.xml dosyası Spring ayar dosyamız oluyor ve burada birkaç tanımlama yapacağız. base-package tanımlaması ile Spring’e annotationlar ile Controller sınıflarımızı nasıl bulacağını söylüyoruz. BookDao ve BookService’ler ile ilgili bilgileri o dosyalara gelince paylaşacağım. Ayar dosyamız içinde onları da tanımlıyoruz. Geriye kalan tanımlamalar ise Hibernate ile ilgili ayarlamalar olup, veritabanımızı, nasıl bağlanacağımızı ve veritabanına erişim ve bilgileri değiştirebilmek için gerekli olan tanımlamaları yapıyoruz.

ServiceController.java

Controller sınıfımızda annotationları, methodlar ile json istekleri almak ve cevaplamak için kullanıyoruz. @Controller ile sınıfımızı denetleyici sınıf olarak işaretlemiş oluyoruz. @RequestMapping ile belirttiğimiz url yolları üzerinden gelen istekleri sınıfımız içinde bulunan methodlara göre işleme alıyoruz. @RequestBody’i gelen istekler için kullanırken, @ResponseBody’i bu isteklere Json cevaplar döndürebilmek için kullanıyoruz.

Book.java

Book sınıfımızı Entity olarak işaretlemek için @Entity annotation’ını kullanıyoruz. @Table ile ise veritabanımızda ki Book tablomuz ile eşleştirme yapıyoruz. Bu sınıf ile verilerin çekilmesi ve yeni verilerin eklenmesine imkan sağlıyoruz.

 

Status.java

Status modeli ile isteklerimize karşı dönen cevaplarda hata mesajlarını alıyoruz.

Dao ve Service sınıfları ile interface leri Spring ile Hibernate arasında oluşan bir katman oluyor. Veritabanına verileri ekleyip, silme, çekme gibi işlemleri hallederken, verileri oluşturduğumuz servislere göndermemizi sağlıyor.

BookDao interface’imize ait fonksiyonları BookDaoImpl sınıfımızda aşağıdaki işlemleri yapmalarını sağlıyoruz.

addBook -> yeni kitap eklememizi sağlıyor.
getBookById -> id değeri ile kitap bilgilerine ulaşmamızı sağlıyor.
getBookList -> veritabanımızda bulunan tüm kitapları ve bilgilerini liste olarak döndürüyor.
deleteBook -> id değeri ile veritabanından kitap silebilmemizi sağlıyor.

BookService interface’i ve BookServiceImpl sınıfı ise BookDaoImpl sınıfında yapabildiklerimizi servisimiz üzerinde gerçekleştirebilmemizi sağlıyor.

BookDao.java

BookDaoImpl.java

 

BookService.java

 

BookServiceImpl.java

 

Bu yazıda kullanılan kodlara veya projeye ulaşmak isterseniz, proje örneğini github üzerinden paylaştım. Bu linkten ulaşabilirsiniz. https://github.com/yusufcakmak/Spring-Restful-Web-Service-with-Hibernate

Servis üzerinden

id ile tekil veri almak için http://localhost:8080/api/1
liste halinde veri almak için http://localhost:8080/api/list
veri silmek için http://localhost:8080/api/delete/1 şeklinde id numarasını ait verileri silebilirsiniz.
veri eklemek için ise Postman gibi tarayıcı eklentileri ile http://localhost:8080/api/create adresine POST atmanız gerekiyor. Postman’da Body kısmında raw seçip yanda çıkan seçeneklerden json ı seçip, aşağıdaki şekilde Post atarak veri ekleyebilirsiniz.

 

 

 

About Author

Yusuf Çakmak

Teknoloji ile ilgilenmeyi seven, herhangi bir teknolojiye kendini ait hissetmeyen, zaman buldukça farklı dilleri, kütüphaneleri, cihazları denemeye çalışan kendi halinde biriyim.

 


4 Responses

  • UmutO

    Anlatım biraz eksik olmuş gibi intellij de proje oluşturuken neyi seçmemis gerekiyor ve birde bilmeyen arakadaşlar için tablo create scripti falan yok bu konuda da yardımcı olmanız dileğiyle

    • Yusuf Çakmak

      Merhaba Umut, yazı içerisinde proje oluşturma süreci ile ilgili ufak bir güncelleme yaptım. Tablo basit olduğu için scripte gerek duymadım. Başka eksik gördüğün şeyleri söylersen sevinirim. Takıldığın yerleri sorabilirsin.

  • EUnal

    Öncelikle javaya ve dolayısıyla intellije yabancı olduğumu belirteyim.Intellij altında proje oluştururken Java Enterprise altında Restful Web Service seçeneği de mevcut. Bunu seçerek proje oluşturmakla Maven olarak proje oluşturmak arasında nasıl bir fark vardır? Öte yandan Intellij ile deployment kısmını nasıl gerçeklediğinizi paylaşabilir misiniz? Genelde örneklerde apache kullanılmış fakat ben weblogic kullanacağım. Bu işlemler için editör üzerinden nasıl bir yol izlenmeli? Teşekkürler

    • Yusuf Çakmak

      Merhaba,

      Proje oluştururken JavaEE -> Restful yolunu izlerseniz JAX-RS kullanıyor diye biliyorum. Projeyi maven olarak oluşturup JAX-RS kullanacaksanız bir fark olmayacaktır. Farklı kütüphaneler kullanmak isterseniz maven oluşturmanızda fayda var.

      Deploy etmek istediğinizde Project Settings > Artifacts yolunu izleyip web:war exploded olarak deployment dosyası oluşturun. Application Server ınızı eklediyseniz Run -> Edit ten .war dosyasınızı ekleyin. Sonrasında run ettiğinizde application serverınıza deploy edecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir