Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

SOAP API nedir?​

SOAP API, uygulamaların XML tabanlı mesajlar aracılığıyla birbiriyle haberleşmesini sağlayan, kuralları ve mesaj yapısı standartlaştırılmış bir web servis yaklaşımıdır. SOAP ile bir servisin hangi işlemleri sunduğu, hangi verileri kabul ettiği ve başarılı ya da hatalı yanıtın nasıl döneceği tanımlanabilir. Özellikle kurumsal uygulamalarda, güçlü sözleşme ve standart hata yönetimi gerektiğinde tercih edilir.

SOAP nasıl çalışır?​


SOAP mesajı genellikle HTTP üzerinden gönderilir; ancak SOAP yalnızca HTTP'ye bağlı değildir. Mesaj XML tabanlıdır. Zorunlu Envelope, isteğe bağlı Header ve zorunlu Body yapısı bulunur; Fault ise gerektiğinde Body içinde taşınır:

  • Envelope: Mesajın SOAP mesajı olduğunu belirten zorunlu dış kapsayıcıdır.
  • Header: Kimlik doğrulama, işlem kimliği, yönlendirme veya başka üstveriler için kullanılan isteğe bağlı bölümdür.
  • Body: İstenen işlem ve işlem parametrelerini içerir.
  • Fault: SOAP hatasını anlatan, Body içinde yer alan hata elemanıdır; her mesajda bulunmaz.

SOAP servisinin sunduğu işlemler çoğunlukla WSDL adı verilen bir tanım belgesinde açıklanır. WSDL; servis adresini, operasyonları, parametre tiplerini, yanıt biçimlerini ve kullanılan mesaj sözleşmesini belirtir. Bu nedenle birçok programlama dili, WSDL'den istemci sınıflarını otomatik üretebilir.

Somut SOAP isteği ve yanıtı​


Örneğin bir uygulama, müşteri numarasına göre müşteri bilgisini sorgulayan GetCustomer adlı bir operasyon sunsun. SOAP 1.1 biçiminde sadeleştirilmiş istek şu yapıya sahip olabilir:

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:m="urn:example:customer">
  <soap:Body>
    <m:GetCustomer>
      <m:CustomerId>42</m:CustomerId>
    </m:GetCustomer>
  </soap:Body>
</soap:Envelope>

Servis işlemi başarıyla yürütürse gövde içinde benzer şekilde yapılandırılmış bir yanıt döner:

Kod:
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:m="urn:example:customer">
  <soap:Body>
    <m:GetCustomerResponse>
      <m:Customer>
        <m:Id>42</m:Id>
        <m:Name>Örnek Müşteri</m:Name>
      </m:Customer>
    </m:GetCustomerResponse>
  </soap:Body>
</soap:Envelope>

Buradaki urn:example:customer değeri, XML ad alanını temsil eden varsayımsal bir tanımlayıcıdır. Gerçek serviste eleman adları, ad alanları ve veri tipleri WSDL ile aynı olmalıdır. Yalnızca XML'i yaklaşık olarak yazmak yeterli değildir; sözleşmedeki ad, sıra, tip ve zorunluluk kuralları da karşılanmalıdır.

SOAP API kullanırken izlenecek yol​


  1. WSDL'yi inceleyin veya istemci üretin. Önce servis adresini, operasyon adlarını, zorunlu alanları ve veri tiplerini belirleyin. Uygulamanızın dili destekliyorsa WSDL'den istemci üretmek, XML'i elle oluşturmaya göre daha az hata üretir.
  2. SOAP sürümünü ve iletişim biçimini doğrulayın. SOAP 1.1 ile SOAP 1.2 farklı zarf ad alanları kullanır. HTTP üzerinde SOAP 1.1 genellikle text/xml, SOAP 1.2 application/soap+xml kullanır; sürüm ve action gereksinimini servis belgesinden doğrulayın. İstemci ve sunucu aynı sürümü kullanmalıdır.
  3. Kimlik doğrulama gereksinimini uygulayın. Bazı servisler HTTP kimlik doğrulaması, bazıları SOAP Header içinde WS-Security bilgisi veya başka bir kurumsal mekanizma kullanır. Gerekli alanları WSDL ve servis dokümanındaki sözleşmeye göre gönderin.
  4. Başarılı yanıtı ve Fault yanıtını ayrı işleyin. HTTP isteğinin ulaşmış olması işlemin başarılı olduğu anlamına gelmez. XML içindeki SOAP Fault bilgisini ayrıştırın; hata kodunu ve güvenli özetini kaydedin. Kimlik bilgisi veya kişisel veri içerebilen tam yanıtı filtresiz günlüğe yazmayın.
  5. Test isteğini gerçek uygulama akışına bağlayın. Önce sabit ve geçerli bir örnekle yanıt şemasını doğrulayın; ardından parametreleri kullanıcı veya veritabanı verilerinden üretin. Yanıttaki zorunlu alanlar yoksa uygulamanızın bunu hata olarak ele almasını sağlayın.

SOAP ile REST arasındaki temel fark​


Her iki yaklaşım da uygulamalar arasında veri alışverişi sağlar; ancak seçim, servisin sözleşme ve kurumsal gereksinimlerine göre yapılmalıdır.

ÖzellikSOAPREST
Mesaj biçimiXML tabanlı standart zarfÇoğunlukla JSON; farklı biçimler de mümkündür
SözleşmeÇoğunlukla WSDL ile sözleşme; SOAP için WSDL zorunlu değildirGenellikle kaynak ve HTTP işlemleri üzerinden tanımlanır
Hata biçimiSOAP Fault yapısıHTTP durum kodu ve uygulamaya özgü gövde
Tercih nedeniKurumsal sözleşme, güvenilirlik ve standart mesaj eklentileriDaha yalın, kaynak odaklı ve tarayıcı/istemci dostu API tasarımı

Bu karşılaştırma, SOAP'ın her durumda daha iyi veya REST'in her durumda daha basit olduğu anlamına gelmez. Mevcut bir kurumsal servis WSDL ve SOAP tabanlıysa istemciyi buna göre kullanmak gerekir. Yeni ve küçük bir HTTP servisi tasarlanıyorsa veri biçimi, istemci çeşitliliği, sözleşme ihtiyacı ve mevcut altyapı birlikte değerlendirilmelidir.

Sık yapılan hatalar​


En yaygın hata, SOAP sürümünü kontrol etmeden hazır bir XML örneğini kullanmaktır. Zarf ad alanı veya HTTP içerik türü yanlışsa sunucu isteği geçerli bir SOAP mesajı olarak kabul etmeyebilir. Bir başka hata, WSDL'deki ad alanlarını ve büyük-küçük harf duyarlılığını değiştirmektir. XML geçerli olsa bile sözleşmeye uymayan alanlar operasyonun reddedilmesine yol açabilir.

Ayrıca yalnızca HTTP durum koduna bakmak da yanlıştır. Servis uygulama seviyesinde hata verdiğinde ayrıntı SOAP Fault içinde bulunabilir. Son olarak, istemci kütüphanesinin otomatik ürettiği XML'i incelemeden üretime almak; tarih, ondalık sayı, boş değer ve karakter kodlaması gibi alanlarda beklenmeyen uyumsuzluklara neden olabilir.

Sık sorulan sorular​


SOAP API sadece XML mi kullanır?​

SOAP mesaj standardı XML tabanlıdır. Bu nedenle SOAP istemcisi ve sunucusu mesaj sözleşmesini XML olarak işler; JSON, SOAP zarfının yerini doğrudan alamaz.

WSDL olmadan SOAP API kullanılabilir mi?​

Evet, servis mesaj yapısı ayrıca belgelenmişse XML istekleri elle oluşturulabilir. Ancak WSDL olmadan operasyon, veri tipi ve zorunlu alanları doğru anlamak zorlaşacağından hata riski artar.

SOAP API'de HTTP 200 yanıtı her zaman başarı mıdır?​

HTTP 200, uygulamanın istediğiniz iş sonucunu ürettiğini tek başına kanıtlamaz; uygulamaya özgü sonuç alanlarını da denetleyin. SOAP 1.1 HTTP bağlamasında SOAP işleme hatası için standart HTTP 500 ve Fault öngörür. HTTP 200 içinde Fault görmek normal başarı davranışı değil, servis uyumsuzluğu olarak ayrıca incelenmelidir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.