Ana içeriğe geç

Yan yana

REST APIvsSOAP

REST ile SOAP arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

REST, düz HTTP, URL ve genelde JSON kullanan hafif bir API tarzıdır; SOAP ise mesajları XML'e saran, katı bir WSDL sözleşmesi kullanan resmî bir protokoldür.

REST API

Representational State Transfer API

REST API, verileri URL'lerle tanımlanan kaynaklar olarak sunan ve istemcilerin onları standart HTTP metotlarıyla okuyup değiştirmesini sağlayan web API'sidir.

REST API sayfasını oku

SOAP

Simple Object Access Protocol

SOAP, her isteği ve yanıtı genellikle resmi bir WSDL sözleşmesiyle tanımlanan katı bir zarfa saran, XML tabanlı bir web servisi mesajlaşma protokolüdür.

SOAP sayfasını oku

REST API ve SOAP karşılaştırması

ÖzellikREST APISOAP
NedirBir mimari tarzResmî bir şartnamesi olan bir protokol
Mesaj biçimiGenellikle JSON; XML ya da başka biçimler de olabilirHer zaman bir SOAP zarfının içinde XML
Sözleşmeİsteğe bağlı; çoğunlukla OpenAPI ile yazılırGenellikle zorunlu bir WSDL dosyası
TaşımaHTTPÇoğunlukla HTTP; SMTP, JMS ve başkaları da olabilir
ÖnbelleklemeGET istekleri için standart HTTP önbelleklemeNeredeyse hiç; istekler genellikle POST'tur
GüvenlikHTTPS ve OAuth gibi token'larHer mesajı imzalayıp şifreleyen WS-Security standartları
En uygun olduğu yerWeb ve mobil uygulamalar, genel API'lerKatı sözleşmeli kurumsal entegrasyonlar

Fark, açıklamalı

Aslen Simple Object Access Protocol'ün kısaltması olan SOAP, sistemler arasında mesaj alışverişi için 2000 civarında ortaya çıktı ve 2003'te bir W3C standardı oldu. Her istek ve yanıt; bir zarf (envelope), isteğe bağlı bir başlık ve bir gövdeden oluşan bir XML belgesidir, bir WSDL dosyası da servisin sunduğu işlemleri tanımlar. Roy Fielding'in aynı yıl tarif ettiği REST ise bir protokol değil, bir mimari tarzdır: kaynakların URL'leri vardır ve GET, PUT, DELETE gibi HTTP metotlarıyla işlenir.

Temel fark ağırlık ve katılıktır. SOAP pek çok şeyi belirler: mesaj biçimini, hata biçimini, güvenlik (WS-Security), işlemler (transaction) ve güvenilir teslimat için eklenti standartlarını; HTTP dışındaki taşıma yollarıyla da çalışabilir. REST ise HTTP'nin zaten sunduklarına, yani durum kodlarına, önbelleklemeye ve kimlik doğrulama başlıklarına yaslanır; bu da çağrıları kısa ve bir tarayıcıdan ya da curl ile denemesi kolay tutar.

Bugün yeni genel ve mobil API'ler için varsayılan, GraphQL ve gRPC ile birlikte REST'tir. SOAP ise resmî sözleşmelerinin ve güvenlik standartlarının uzun zaman önce benimsendiği bankacılık, sigorta, sağlık, kamu ve eski kurumsal sistemlerde yaygın olmaya devam ediyor; bu yüzden birçok geliştirici REST tabanlı uygulamalardan hâlâ SOAP servislerini çağırmak zorunda kalıyor.

Sık yapılan bir yanlış, SOAP'ın sadece eski, REST'in de sadece daha iyi olduğu düşüncesidir. SOAP'ın katı sözleşmeleri, üretilen istemcileri ve standart güvenliği bazı entegrasyonlarda gerçek avantajlardır; REST'in özgürlüğü ise her API'nin hatalar, sürümleme ve belgeleme için kendi kurallarını icat etmesi demektir ve bu boşluk çoğu zaman OpenAPI ile doldurulur.

Hangisini kullanmalısınız?

REST API şu durumlarda doğru seçim:

  • Yeni bir web, mobil ya da genel API geliştiriyorsunuz.
  • Küçük JSON mesajları ve HTTP önbellekleme istiyorsunuz.
  • Geliştiriciler API'yi düz HTTP araçlarıyla keşfedebilmeli.

SOAP şu durumlarda doğru seçim:

  • Yalnızca SOAP sunan mevcut bir sistemle entegre oluyorsunuz.
  • Mesaj seviyesinde güvenliğe ya da güvenilir teslimat standartlarına ihtiyacınız var.
  • İki taraf da kod üretebileceği katı, makinenin okuyabileceği bir sözleşme istiyor.

Tek bir kullanıcıyı istemek

REST APIhttp
GET /users/42 HTTP/1.1
Host: api.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{ "id": 42, "name": "Ada" }
SOAPhttp
POST /UserService HTTP/1.1
Host: api.example.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "GetUser"

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetUser xmlns="http://example.com/users">
      <Id>42</Id>
    </GetUser>
  </soap:Body>
</soap:Envelope>

Sık sorulan sorular

SOAP hâlâ kullanılıyor mu?

Evet; çoğunlukla bankacılık, sigorta, sağlık, telekom ve kamu sistemlerinde ve eski kurumsal yazılımlarda. Yeni API'lerin çoğu ise REST, GraphQL ya da gRPC kullanıyor.

REST, XML kullanabilir mi?

Evet. REST bir veri biçimini zorunlu kılmaz; JSON yalnızca en yaygın seçimdir. Bir REST API'si XML, CSV ya da istemcinin Accept başlığıyla istediği başka bir biçim döndürebilir.

SOAP, REST'ten daha mı güvenli?

Kendiliğinden değil. SOAP'ın tek tek mesajları imzalamak ve şifrelemek için standartları vardır ve bazı sektörler bunu ister; ama HTTPS üzerinden, düzgün kimlik doğrulamayla sunulan bir REST API'si çoğu kullanım için güvenlidir.

Daha fazla

Ayarlar