SOAP Nedir?
Simple Object Access Protocol (SOAP), farklı işletim sistemlerinde çalışan ve farklı teknolojileri kullanan programların birbirleriyle ağ üzerinden iletişim kurmasını sağlayan bir iletişim protokolüdür. Extensible Markup Language (XML) tabanlı bir protokol olup, iletişim mesajlarının yapısını belirleyen bir dizi kuralı tanımlar ve uygulamalar arasında bilgi alışverişini mümkün kılar.
SOAP, verileri temsil etmek ve uzaktan yöntem veya fonksiyon çağırmak için standartlaşmış bir yol sağlar. XML kullanarak mesaj biçimlendirmesi yapar ve farklı sistemler tarafından kolayca anlaşılabilir verilerin iletilmesini sağlar. SOAP mesajları genellikle Hyper Text Transfer Protokol (HTTP) veya diğer uygulama katmanı protokollerini kullanarak iletilir.
Bir SOAP mesajının ana bileşenleri arasında zarf (envelope), başlık (header) ve gövde (body) bulunur. Zarf, tüm SOAP mesajını kapsar ve mesajın yapısı ve işleme talimatları hakkında bilgi içerir. Başlık isteğe bağlıdır ve kimlik doğrulama veya şifreleme gibi ek bilgileri içerebilir. Gövde, gerçek veriyi veya çağrılan yöntemi içerir.
SOAP, istek-cevap, tek yönlü veya çok noktaya yayın gibi çeşitli iletişim desenlerini destekler. Ayrıca başlıklar aracılığıyla uygulama özel bilgileri taşıma yeteneğiyle esnekliği sağlar.
SOAP’ın bir ana avantajı, güvenlik, güvenilirlik ve işlem yönetimi gibi gelişmiş özellikleri desteklemesidir. Kimlik doğrulama, şifreleme ve hata işleme gibi özellikler için dahili mekanizmalar içerir. Bu özellikler, güçlü ve birbirleriyle uyumlu olma gerektiren kurumsal uygulamalar için SOAP’ı tercih edilen bir seçenek yapar.
Ancak, SOAP diğer alternatiflere, özellikle Representational State Transfer (REST)’e göre daha karmaşık ve ağırdır. XML tabanlı mesaj formatı ve mesajların ayrıştırılması ve yorumlanması için gereken ek işlemler nedeniyle daha fazla iş yükü gerektirir.
Genel olarak, SOAP, dağıtık sistemler arasında yapılandırılmış ve güvenilir iletişim için tasarlanmış bir protokoldür. Özellikle gelişmiş özelliklerin ve uyumluluğun önemli olduğu durumlarda, kurumsal senaryolarda ve web servislerinde yaygın olarak kullanılmıştır.
Örnek olarak, bir SOAP isteği aşağıdaki gibi gözükebilir:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”
xmlns:example=”http://www.example.com/namespace”>
<SOAP-ENV:Header>
<example:Authentication>
<example:Username>user123</example:Username>
<example:Password>pass456</example:Password>
</example:Authentication>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<example:GetUserInfo>
<example:UserID>12345</example:UserID>
</example:GetUserInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Bu örnek, “http://www.example.com/namespace” ad alanına sahip bir servisi kullanarak bir kullanıcının bilgilerini almak için bir SOAP isteği temsil eder. Başlık bölümünde kimlik doğrulama bilgileri yer alırken, gövde bölümünde ise kullanıcı kimliği belirtilmiştir.
Bu istek, bir SOAP sunucusuna gönderildikten sonra sunucu bu isteği işler, gerekli işlemleri gerçekleştirir ve sonuç olarak bir SOAP yanıtı döndürür.
REST Nedir?
Representational State Transfer (REST), web servislerini tasarlamak için kullanılan bir ve iletişim protokolüdür. REST, var olan protokolleri, özellikle HTTP’yi kullanarak iletişimi sağlar. Web’in temel prensiplerine dayanan REST, kaynakları temsil eder ve bu kaynaklar üzerinde standart HTTP yöntemlerini kullanarak etkileşim sağlar.
REST’in temel prensipleri şunlardır:
- Kaynak Odaklı (Resource-Oriented): REST, kaynakları temsil eder ve bu kaynaklara benzersiz bir tanımlayıcı olan URI (Uniform Resource Identifier) üzerinden erişilir. Örneğin, bir kullanıcının profili /users/123 gibi bir URI ile temsil edilebilir.
- Durumsuz (Stateless): REST, durumsuz bir yapıya sahiptir. Her istek, tam olarak işlemek için gereken bilgileri içerir ve sunucuda herhangi bir oturum durumunu (session state) tutmaz. Bu, ölçeklenebilirlik ve esneklik sağlar.
- Birleşik Arabirim (Uniform Interface): REST, birleşik bir arabirim sağlar. İstemci ve sunucu arasındaki etkileşim, standart HTTP yöntemlerini (GET, POST, PUT, DELETE vb.) kullanarak gerçekleştirilir. HTTP yöntemleri, kaynak üzerinde okuma, oluşturma, güncelleme ve silme işlemlerini temsil eder.
- İçeriğe Dayalı (Content Negotiation): REST, iletişimde kullanılan veri formatını (örneğin JavaScript Object Notation(JSON) veya XML) belirleme yeteneğine sahiptir. İstemci ve sunucu, kabul edilebilir içerik türlerini müzakere ederek iletişimde kullanacakları veri formatını belirlerler.
REST örnekleri aşağıda verilmiştir:
1. Kaynak Getirme (GET):
İstek: GET /users/123
Bu örnek, URI’deki “/users/123” kaynağını okumak için bir GET isteğini temsil eder.
2. Kaynak Oluşturma (POST):
İstek: POST /users
Gövde: { “name”: “Ahmet”, “age”: 25 }
Bu örnek, “/users” kaynağına yeni bir kullanıcı oluşturmak için bir POST isteğini temsil eder. İstek gövdesinde kullanıcının adı ve yaşı gibi bilgiler yer alır.
3. Kaynak Güncelleme (PUT):
İstek: PUT /users/123
Gövde: { “name”: “Mehmet”, “age”: 30 }
Bu örnek, “/users/123” kaynağını güncellemek için bir PUT isteğini temsil eder. İstek gövdesinde güncellenmiş kullanıcı bilgileri yer alır.
4. Kaynak Silme (DELETE):
İstek: DELETE /users/123
Bu örnek, “/users/123” kaynağını silmek için bir DELETE isteğini temsil eder.
Bu örnekler, RESTful bir servis aracılığıyla yapılan temel istekleri ve bu isteklerin kaynaklar üzerindeki etkileşimlerini göstermektedir. REST’in temel prensiplerini izleyerek, farklı istemciler ve sunucular arasında veri alışverişi yapmak için bir standart sağlanır.
SOAP (Simple Object Access Protocol) ve REST (Representational State Transfer), web hizmetleri tasarımında kullanılan iki farklı iletişim protokolüdür ve birbirlerinden bazı farklılıklara sahiptirler. İşte SOAP ve REST arasındaki farkları detaylı bir şekilde açıklayan örneklerle birlikte inceleyelim:
Örneklerle açıklarsak:
SOAP Örneği:
“`xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”>
<SOAP-ENV:Header>
<!– Başlık bilgileri –>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<!– İşlem içeriği –>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
“`
Bu örnek, SOAP tabanlı bir mesajın yapısını göstermektedir.
REST Örneği:
“`
GET /users/123
“`
Bu örnek, bir RESTful servise yapılan bir GET isteğini temsil eder. “/users/123” URI’sindeki kullanıcı kaynağını getirme işlemini ifade eder.
SOAP ve REST, farklı senaryolara ve ihtiyaçlara uygun farklı yaklaşımlar sunar. Uygulamanın gereksinimlerine ve mevcut altyapıya bağlı olarak SOAP veya REST tercih edilebilir.
API Servis Test Araçlarından: SOAP UI ve Postman Kullanımı
SOAP ve REST API Servis Testleri için en çok kullanılan araçlardan SOAP UI ve POSTMAN’i ayrı ayrı inceleyelim.
SOAP UI Nedir?
SOAP UI, web servis entegrasyonlarında kullandığımız bir araçtır. Bir web servisi çağırmak, simule etmek veya web servis de fonksiyonel test yapmak için kullanılır. Sadece SOAP değil aynı zamanda REST etmek de mümkündür.
SOAP web servisi geliştirileceği zaman bir Web Service Description Language (WSDL) dosyası hazırlanır. Bunun için metot, parametre, web servis adresi vb. gibi değerlerin bilinmesi gerekir.
SOAP UI, hem bu WSDL dosyasından test istemcisi oluşturarak, hem de başka bir servise doğrudan bir erişiminiz olmadığı durumlarda test sunucusu oluşturarak test edilebilir.
Örnek WSDL yapısı aşağıdaki gibidir.
SOAP UI Nasıl Kullanılır?
SOAP UI üzerinde SOAP API ve REST API servis testleri ve kullanımını ayrı ayrı inceleyelim.
SOAP API Servis Testleri ve Kullanımı
OAP UI üzerinde yeni bir proje oluşturmak için: File > New SOAP Project seçilir. (Şekil 2.)
Proje aşağıdaki ekranda Project Name alanı doldurulduktan sonra kaydedilir. (Şekil 3.)
Bu aşamada oluşturulan projeye web servisi çağırmak ve test etmek üzere projeye eklemek için aşağıdaki yol izlenir. (Şekil 4.)
Bu projede test amaçlı hizmete sunulan http://tckimlik.nvi.gov.tr adresinde vatandaşlık numarası doğrulama hizmetini ele alalım.
Servisin WSDL dosyasını adresini https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?wsdl olarak projeye ekleyelim. (Şekil 5.)
Bu aşamadan sonra servis SOAP UI projesi üzerine eklenmiş oldu artık istek (request) oluşturup servis test edilir.
Aşağıdaki ekranda request örneği görülmektedir. Bu kısımda servis için gerekli alanlar doldurulduktan sonra yeşil butona basılarak servisin girilen bu değerler ile dönen sonucu görülebilir. (Şekil 6.)
Servisten başarılı veya başarısız cevap dönecektir. Başarısız sonuçlarda dönen hatanın durum ile uyumlu olup olmadığı kontrol edilmelidir.
REST API Servis Testi ve Kullanımı
SOAP UI üzerinde REST sekmesine tıklayarak URL kısmına REST API adresi yazılır. (Şekil 7.)
Örnek REST API Adresi
https://petstore.swagger.io/v2/pet/findByStatus?status=available (Şekil 8.)
Resimdeki gibi Request gelecektir. Request’e hiçbir parametre eklemeden direk GET denirse tüm datayı istek-cevap(Response) JSON olarak döner. (Şekil 9.)
XML, JSON, HTML, Raw sekmelerinden JSON olan seçilirse response penceresinde datanın tamamı görülür.
Aşağıdaki gibi Add (+) Adds a Parameter diyerek Name ve Value ekleyip toplu gelen JSON datasından istenilen datalar çekilir. Eklenen value ile REST API Link uzantısının nasıl değiştiği görülür. (Şekil 10.)
POSTMAN Nedir?
Postman REST ve SOAP servisleri (API’leri) test etmek için uzun uzun kodlar yazmadan test etmemizi sağlayan, Chrome üzerinden veya masaüstü uygulama olarak indirilerek kullanılabilen bir uygulamadır.
İstekler belli komutlar kullanılarak yapılır.
GET: Sunucudan sadece veri alır. Body kısmı doldurulmaz.
POST: Sunucuya yeni veriler gönderir. Body kısmında request ile veri iletilir.
PATCH & PUT: Sunucu üzerindeki verileri günceller.
DELETE: Verileri kaldırır.
Temel özellikleri şu şekildedir:
- Hızlı ve kolay bir şekilde REST ve SOAP istekleri oluşturulabilir.
- Testleri kolaylaştırır.
- Dokümanlar hızlı ve kolay bir şekilde yayınlamanıza olanak tanır.
Postman Nasıl Kullanılır?
Öncelikle bir workspace oluşturmalıyız. Daha sonra New Butonuna basmalı çıkan popup ekranında Collection’ı seçmeliyiz. (Şekil 11.)
Her bir collection’ı çalışmalarımızı düzenli bir şekilde tuttuğumuz dosyalar gibi düşünebiliriz. Belli bir çalışmanın testlerini bir collection altında tanımlayarak daha sonra tekrar tekrar kullanabiliriz veya başkalarıyla kolayca paylaşabiliriz.
Bir Collection oluşturduktan sonra “Add a request” yazısına tıklayarak çalışmaya başlayacağımız alanı açmış oluruz. (Şekil 12.)
Daha sonra istek yapılacak servis url’i girilir ve ilgili servis için gerekli ayarlar yapılarak devam edilir. (Şekil 13-14.)