1. Anasayfa
  2. Java

Java ile RESTful Web Servisleri Nedir ve Basit Bir RESTful Web Servis Nasıl Oluşturulur?


1

Bu yazıda Java ile bir REST Web servisinin nasıl yazılabileceğine değiniyor olacağız.

Representational State Transfer (REST) Roy Fielding’in “Architectural Styles and Design of Network Based Software Architectures” Doktora tezinde ortaya koyduğu HTTP protokolünün başarısı örnek alınarak geliştirilmiş dağıtık bir ağ mimarisidir. (detaylar için http://en.wikipedia.org/wiki/Roy_Fielding) kısaca özetler isek REST, web servislerinin HTTP metotları (POST,GET,PUT,DELETE vb.) kullanılarak çağrılması ve bu metotların cevapları içerisinde istenilen verinin iletilmesini içeririr. Tatbikî REST sadece web servisleri için önerilmiş bir mimari değil ancak bizim konumuz web servisleri olduğu için sadece bu kısmına değineceğiz.

Öncelikle REST’in bir mimari olduğunu SOAP’ın ise bir protokol olduğunun altını kalınca çizelim. Her ikisinin de ayrı ayrı güçlü tarafları olduğunu kabul edelim. Benim kişisel deneyimim REST web servislerinin çok daha kolay yazılıp daha kolay test edildiği yönünde. (ayrıca geliştirilmesi daha eğlenceli). Eğer benim gibi KISS (Keep it simple stupid) prensibi hayranlarındaysanız kısa zamanda REST programlama envanterinize dahil olacaktır.

Biraz detaya inersek REST web servisleriniz bir kaynağa (Resource) erişim ve kaynak ile etkileşimi http metotları ile yapmanızı gerektiriyor. Bir örnek ile açıklayalım.


Resim-1

Bir müşteri veri tabanı uygulaması geliştirmek istiyoruz, uygulamamız müşterilerin kayıtlarının tutulmasını ve bu kayıtlar üzerinde işlem yapılmasını mümkün kılsın. Aşağıda sağlamak istediğimiz CRUD (Create, Update, Delete) işlemleri var.

  1. Sisteme yeni müşteri girme (Create)
  2. Sistemden müşteri silme (Delete)
  3. Sistemde var olan bir müşteriyi güncelleme (Update)
  4. Sistemde var olan müşteri bilgilerini görüntüleme

Bu işlemleri REST kullanarak sağlamak ister isek aşağıdaki gibi bir süreç izlememiz gerekiyor.

Yukarıdaki örnekte kaynağımız müşteri oluyor.

  1. Müşteri kaynağına erişim sağlayan bir URL ( /services/customers )
  2. Müşteri kaynağı üzerinde işlem yapmamızı sağlayan metotların tanımlanması
  • Sisteme yeni müşteri girme -> HTTP POST {yeni müşteri verisi}
  • Sistemden müşteri silme -> HTTP DELETE {müşteri tanımlayıcısı}
  • Sistemde var olan bir müşteriyi güncelleme -> HTTP PUT {müşteri tanımlayıcısı, güncellenmiş müşteri verisi}
  • Sistemde var olan bir müşteriyi görüntüleme -> HTTP GET {müşteri tanımlayıcısı}

Tekrar eder isek erişim sağlamak istediğimiz kaynak için bir url belirleme ve kaynak üzerinde işlem yapmak için var olan HTTP metotlarını kullanarak servis tasarımımızı yapıyoruz. Aşağıda yaptığımız tasarımın gösterimini bulabilirsiniz.


Resim-2

Kısaca tekrar özetler isek, REST web servisleri yazılmadan önce, üzerinde işlem yapmak istediğimiz kaynakların belirlenmesi, ve bu kaynaklar üzerinde yapmak istediğimiz işlemlerin HTTP metotlarına haritalanması gerekmekte. Çok fazla detaya girmeden işlem için kullanmak istediğimiz http metodunun kullanım amacını saptırmamamız gerektiğinin altını çizmek istiyorum, HTTP’nin çok uzun zamandır kullanılmakta olduğunu ve pek çok proxy ve web serverın hizmet sunarken http metodlarına göre farklı davranışlar sergilediğinin bilincinde olmalıyız.

Bu kısa teoriden sonra, minik bir örnek oluşturalım; Örneğimiz tek bir kaynak üzerinde tek bir işlem yapılmasını içeriyor olacak, web sunucusundan saat sorgusu yapan bir uygulama geliştiriyor olacağız, burada kaynağımız zaman olacak. Kullanıcı zaman kaynağına erişip o anki zaman değerini sorgulayabilecek; aşağıda örneğimizin REST tasarımını bulabilirsiniz.


Resim-3

Java geliştirme ortamımızı açıyor (Netbeans) ve kodlamaya başlıyoruz; (Eğer netbeans bilgisayarınızda yok ise https://netbeans.org/downloads/ adresinden JavaEE sütunun altındaki Download tuşuna basıyoruz next next ile netbeans kurulumumuzu tamamlıyoruz.)


Resim-4

Öncelikle yeni bir Java Web projesi oluşturuyoruz.


Resim-5

Projemize isim veriyoruz (CurrentTime).


Resim-6

Aşağıdaki ayarları aynen bırakıyor ve Finish diyoruz.


Resim-7

Aşağıdaki paket yapısını (org.mshowto.rest) oluşturuyor ve 2 adet sınıf ( JAXRSApplication, CurrentTimeService ) 1 adet interface (CurrentTimeInterface) oluşturuyoruz.


Resim-8

CurrentTimeResource.java


Resim-9

CurrentTimeService.java


Resim-10

JAXRSApplication.java


Resim-11

Ve hepsi bu kadar, projemize sağ tıklayıp Run diyoruz.


Resim-12

Bu aşamadan sonra Glassfish sunucumuz uygulamamızı yüklüyor ve bizde tarayıcı ekranından uygulamamıza Navigate ederek servisimizin sonucunu görüyoruz.

http://localhost:8080/CurrentTime/services/currenttime


Resim-13

Bu aşamaya kadar başarı ile geldiyseniz :) bravo Java ile ilk REST web servisinizi oluşturmuşsunuz demektir. REST web servisleri çok basit ve çok güçlü olmaları sebebi ile yazılım geliştirme süreçlerini ve isterlerin karşılanmasını inanılmaz kolaylaştırıyor. Ancak elbette bu konu göründüğü kadar basit değil bu yazımızda bir girizgah yapmış olduk. Bu konu üzerinde çalışmaya devam ediyor olacağız.

Referanslar

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 8
    harika_
    Harika!!
  • 3
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Rıdvan Özaydın, lisans eğitimini Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünde, yüksek lisans eğitimini ise İstanbul Teknik Üniversitesi Bilgisayar Bilimleri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı C eğitimi ile başlamış, sektörün önde gelen firmalarında Java teknolojileri üzerine çalışmış, şu anda da Thales’de yazılım mühendisi olarak görev almaktadır.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. Ellerinize sağlık güzel bir anlatım olmuş fakat örnekleri biraz daha açıklayıcı yazarsanız herkesin anlaması daha kolay olabilir. İyi günler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir