REST ve SOAP, çevrimiçi veri aktarımı için kullanılan iki farklı yaklaşımdır. Her ikisi de verilerin web uygulamaları arasında iletilmesine izin veren uygulama programlama arayüzlerinin (API) nasıl oluşturulacağını tanımlar. SOAP ve REST’in detaylı incelemesine geçmeden önce API ve web servisin ne olduğuna ve bazı kavramların tanımlarına göz atalım.
Bu yazıda sıklıkla karşılaşacağımız terminolojiyi inceleyelim:
API ve web servis nedir?
Web servisler ve API çok benzer iki kavramdır, bu sebeple benzerlik ve farklılıklarını anlamak zor olabilmektedir.
Web servis iki makinenin bir ağ üzerinden birbirleriyle iletişim kurmasının bir yoludur. Bir bilgisayar üzerinden çalışan bir web sunucusu, diğer bilgisayarlardan gelen istekleri dinler. Bir ağ üzerinden başka bir bilgisayardan istek alındığında, web servisi istenen kaynakları döndürür. Bu kaynak JSON, XML, HTML formatında olabileceği gibi görüntü ve ses dosyaları da olabilir.
API (application programming interface) yani uygulama programlama arayüzü, bir uygulamanın başka bir uygulamayla iletişim kurmasını sağlayan bir dizi tanım ve protokoldür. Genel olarak API’lerden bahsedildiğinde akla önce Web API’ler gelir. Her ne kadar aklımıza web api’ler gelse de API’ler iki yerel uygulamanın (C/C++ programlarındaki .h dosyası, Java programlarındaki jar dosyası) birbiriyle iletişim kurmasını sağlamak için yerel dosyalar aracılığıyla açığa çıkarılabilir. İki uygulama tek bir cihaz içinde iletişim kurduğundan bir ağ gerektirmez.
API’ler ve web servislerinin en önemli farklarından biri; tüm API’lere internet (ağ) üzerinden erişilemezken, web servislerine her zaman bir ağ üzerinden erişilmesi gerekmesidir.
Tüm web servisleri API iken tüm API’ler web servis değildir.
SAOP ve REST’i daha detaylı inceleyelim:
SOAP nedir?
SOAP (Simple Object Access Protocol) yani basit nesne erişim protokolüdür. HTTP üzerinden web servislerine erişmek için XML tabanlı bir protokoldür. Çeşitli programlama dillerinde oluşturulmuş uygulamaların birbirleriyle etkin bir şekilde iletişim kurabilmesi için bir ara dil olarak geliştirilmiştir. Web servisler, uygulamalar arasında XML verisinin alışverişi için SOAP kullanır. SOAP, hem durum bilgisi olan(stateful) hem de durum bilgisi olmayan (stateless) işlemleri destekler.
SOAP’ın özellikleri aşağıdaki gibi sıralanabilir:
SOAP mesajının yapısını daha detaylı inceleyelim:
Bir SOAP mesajı; öğesinde, isteğe bağlı bir
öğesi ve zorunlu bir öğesi içerenn bir XML dokümanı olarak kodlanır. içerisinde bulunan öğesi, hataları bildirmek için kullanılır.
her SOAP mesajında bulunan root (kök) öğedir ve isteğe bağlı bir
ile zorunlu bir öğesi olmak üzere iki alt küme içerir.
SOAP envelope yapısının isteğe bağlı bir alt öğesidir ve ileti yolu boyunca SOAP düğümleri tarafından işlenecek ilgili bilgileri iletmek için kullanılır.
mesajın nihai alıcısına yönelik bilgileri içeren SOAP envelope yapısının zorunlu bir alt öğesidir.
, hataları bildirmek için kullanılan SOAP gövdesinin bir alt öğesidir. SOAP fault kodları:
REST (Representational State Transfer) yani temsili durum transferi, çeşitli web servislerinin geliştirilmesinde sıklıkla kullanılan iletişim amaçlı mimari bir yaklaşımdır. Stateless (durum bilgi) bir sunucu modelidir. REST kavramı üzerinde tanımlanan web servisleri, RESTful web servisleridir. Bir istemci RESTful API üzerinden bir istekte bulunduğunda, kaynakların durumunun temsilini sunucuya aktarır. Bu bilgiler HTTP aracılığıyla JSON, HTML, XLT ve düz metin gibi çeşitli biçimlerde aktarılabilir. Ancak JSON, makineler ve insanlar tarafından kolay okunabilmesi nedeniyle en yaygın kullanılan dildir.
REST’in özellikleri aşağıdaki gibi sıralanabilir:
Bu yazımızda çevrimiçi veri aktarımı için kullanılan iki farklı yaklaşım olan REST ve SOAP’ın detaylı özelliklerini inceledik. Özetle, REST (Representational State Transfer) yani temsili durum transferi, çeşitli web servislerinin geliştirilmesinde sıklıkla kullanılan iletişim amaçlı mimari bir yaklaşımdır. SOAP (Simple Object Access Protocol) yani basit nesne erişim protokolüdür. HTTP üzerinden web servislerine erişmek için XML tabanlı bir protokoldür.