RESTful Web Service – Jersey

Merhabalar, bu yazı RESTful (JAX-RS) web servisleri üzerine bir örnek olacaktır. İçerikten bahsetmek gerekirse projeyi oluşturma, veritabanını tasarlama, DAO katmanının yazılması, Rest Servislerin yazılmasını ve hatta hazırladığınız Rest Servise ait istemcinin nasıl yazılacağına kadar bir çok konuyu kapsayacaktır.

İÇİNDEKİLER

  • Projenin Oluşturulması
  • Veritabanının Oluşturulması
  • Veritabanı modellerinin oluşturulması
  • DAO Sınıfının Yazılması
  • Web Servislerinin Yazılması
  • Web Servis için İstemcinin yazılması

1. HAZIRLIK

Tüm proje Eclipse IDE altında geliştirilecektir. Ayrıca geliştirme sırasında sunucu olarak MySQL ve Tomcat v7.0 kullanılacaktır. RESTful Web servisleri için, JAX-RS uygulaması olarak Jersey kullanılacaktır. İsterseniz başka JAX-RS uygulamaları da kullanabilirsiniz. Projenin lifecycle’ı maven tarafından yönetilecektir. Bu sebepten M2E eklentisini kullanmanız tavsiye edilir.

Projede izleyeceğimiz senaryo,  Restaurantlar için bir rezervasyon sistemi yazılacağını düşünelim . Arayüzü destekleyecek verilerin çekilmesinden, sistemi kullanacak firmaların kaydını yapmaktan ve sisteme kayıtlı firmalar için rezervasyon kaydı tutmaktan sorumlu Web Servisi yazma işi ve veritabanının tasarlanması bu projede bize verilmiş olsun.

1.1 Projeyi oluşturma

Eclipse üzerinden bir Dynamic Web Projesi create ediyoruz. Projeyi create ettikten sonra sağ click yaparak projeyi Maven projesine çeviriyoruz.

Eclipse altında yarattığımız proje de, pom.xml dosyanızı açın. Burada yapmamız gereken tüm projeler için ortak olacak bağımlılıkları, build komutlanırı, raporlama komutlarını girmek.

1.1.1 Bağımlılıklar

İlk önce proje genelinde kullanacağımız bağımlılıkları ekleyelim. Bu bağımlılıkları istediğimiz zaman gelip değiştirebiliriz. Bağımlılıkları eklemek için aşağıdakileri, dependencies tabının altına kopyalamaniz yeterlidir.

1.2 Veritabanının Tasarlanması

Veritabanı iki farklı tablodan oluşacak. Bunlardan biri User tablosu. Örnek projemizdeki Rezervasyon yapacak müsterileri temsil edecek. Diğeri ise sisteme kayıtlı Restaurant Firmaları tablosu. Bir diğeri ise Rezervasyon bilgilerini tuttuğumuz Rezervasyon tablosu. Bunun için öncelikle veritabanı şemamızı oluşturuyoruz. Ben örnekte MySQL veritabanı kullanacağım. Siz istediğiniz veritabanını seçmekte özgürsünüz. Kullanacağımız şema companyrezdb olsun.

1.2.1 User tablosunun oluşturulması

1.2.2 Rezervasyon tablosunun oluşturulması

Rezervasyon tablosundaki her rezervasyon kaydı bir kullanıcıya ait olmalı. Bunun için Rezervasyon tablosu ile User tablosu arasında 1->N bir ilişki olmalıdır. Rezervasyon tablosunu bu özelliklerle aşağıdaki gibi oluşturuyoruz.

1.2.3 Firma tablosunun oluşturulması

Sisteme rezervasyon yapılacak firmaları eklemek için oluşturuyoruz.

2. Veritabanı Modellerinin Hazırlanması

2.1  Employee.java classının oluşturulması

Veritabanındaki User tablomuz için pojo sınıfımızı oluşturalım.

2.1.2 Company.java classının oluşturulması 

2.1.3 Rezervasyon modelinin oluşturulması

3. DAO Sınıflarının oluşturulması

Öncelikle tüm DAO sınıflarında ortak olan, metodları belirleyeceğiz. Bu metodları bir interface sınıfına çıkartacağız. Ardından yine tüm DAO sınıflarında ortak olarak kullanılacak metodları uygulayacağız. Ardından her bir model için DAO sınıflarını oluşturacağız. Oluşturacağımız interface’te CRUD işlemleri olacak.

3.1 Company modelimiz için CompanyDAO sınıfı :

3.2 Employee modelimiz için EmployeeDAO sınıfı :

3.3 Rezervasyon modelimiz için RezervasyonDAO sınıfı :

Şu anda en temel veritabanı işlemlerini yapabilecek şekilde sınıflarımızı hazırladık.

4.Servislerin Hazırlanması

Şimdi artık servisimizi tam manasıyla hazırlayabiliriz. Metodlarımızı belirledik, DAO sınıfılarımızı ve modellerimizi hazırladık, bağımlılıklarımız da tamam.

4.1 Employee Service :

4.2 Company Service :

4.3 Rezervasyon Service :

Evet servisimizi de yukarıdaki gibi yazdık. Biraz da neyin ne olduğunu incelemeye başlayalım.  POST, DELETE, EDIT ve GET metodlarını kullandık. Kullanıcı silme işlemleri için DELETE tipinde HTTP Request’ler bekleniyor aynı şekilde Kullanıcı bilgilerini düzenlemek için EDIT sisteme Kullanıcı ve Firma eklemek için POST kullandık. Veri tabanında ki verilere erişmek istediğimiz de GET kullandık. GET metodlarınızı tarayıcınız üzerinden deneyebilirsiniz. Örnek bir kaç adresi aşağıda veriyorum.

Sisteme kayıtlı tüm kullanıcıları görmek için :

http://localhost:9999/_RESTful_JDBC_CRUD/rest/employee/all

Sisteme kayıtlı tüm Firmaları görmek için :

http://localhost:9999/_RESTful_JDBC_CRUD/rest/company/all

Sisteme kayıtlı varsa 12 numaralı kullanıcıyı görmek için :

http://localhost:9999/_RESTful_JDBC_CRUD/rest/employee/12

Evet, artık web servisimizi de tamamladık. Burdan sonra bu geliştirdiğimiz web servisimize özel istemcileri nasıl yazacağımız kaldı.

Takip edemeyenler ve projenin son halini merak edenler için projenin git deposu aşağıdaki gibidir.
Projeleri yaratırken sorun yaşadıysanız, proje yapısına Git Repo’sundan bakabilirsiniz.

  • git repo :

https://github.com/AysenurGokdemir/JAX-RS-RESTful-WEB-SERVICE

 

 

“RESTful Web Service – Jersey” üzerine 4 yorum

  1. Hey there! This post couldn’t be written any better!
    Reading through this post reminds me of my good old room mate!
    He always kept chatting about this. I will forward this post to him.
    Fairly certain he will have a good read. Thank you for sharing!

Bir Cevap Yazın

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