post-thumb

REST ve SOAP API Nedir? Farkları Nelerdir?

Bu yazıya öncelikle API’nin ne olduğunu açıklayarak başlamak doğru olacaktır.

API Nedir?

API (Application Programming Interface) yani Uygulama Programlama Arayüzü anlamına gelmektedir. Kısaca iki uygulamanın birbiriyle iletişim halinde olabilmesini sağlayan bir yazılım aracıdır.

API, bir uygulamaya ait işlevlerin başka uygulamalarda da kullanılabilmesi için oluşturulmuş bir arayüzdür. Örneğin, meteoroloji müdürlüğünün yazılım sistemi, günlük hava durumu verilerini içerir. Telefonunuzdaki hava durumu uygulaması, API’ler aracılığıyla bu sistemle “konuşur” ve telefonunuzda size günlük hava durumu güncellemelerini gösterir.

Bu başlık altında XML ve JSON veri aktarım tiplerinden ve HTTP protokolünden de bolca sözünü edeceğimizden dolayı, kısaca bu başlıkların ne olduğunu açıklamakta fayda olacaktır.

XML Nedir?

XML (Extensible Markup Language)(Genişletilebilir İşaretleme Dili), hem insanlar hem de bilgisayar sistemleri tarafından kolayca okunabilen belgeler oluşturmak için kullanılan bir işaretleme dilidir. W3C tarafından tanımlanan bir standarttır. Veri depolamanın yanında farklı sistemler arasında veri alışverişi yapmak amacıyla ara format görevi görmekte. SGML’nin basitleştirilmiş bir alt kümesidir.

Bir XML örneği aşağıda yer almaktadır.

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

JSON Nedir?

JSON (JavaScript Object Notation) (JavaScript Nesne Gösterimi) kısaltmasıdır. Verileri depolamak ve farklı platformlar arasında taşımak için kullanılan bir yapıdır. JavaScript nesne gösterim biçiminde yazılmış metinlerdir.

Basit bir JSON örneği aşağıda yer almaktadır.

{
"Id": 1,
"adi": "Sinan",
"soyadi": "Fen",
"email" : "testemail@test.com"
}

JSON dosyaları “.json” uzantısını kullanır.

HTTP Nedir?

HTTP (Hypertext Transfer Protocol)(Üstün Metin Transfer Protokolü) Dünya çapında 1990 yılından itibaren ağ üzerinde kullanılmakta olan iletişim protokolüdür. İnternet üzerinde görmüş olduğumuz web sayfalarının görüntülenmesini sağlayan bir protokoldür.

REST API Nedir?

REST (Representational State Transfer), günümüzde web’de bulunan en popüler ve esnek API’lerdir. Rest, HTTP (Hypertext Transfer Protocol) protokolünü kullanarak, URL adresleri üzerinden veri ve dosya alışverişi yapılmasını sağlayan bir yapıdır. Rest API ise Rest işlemini yapabilmek için kurgulanmış modüle verilen isimdir.

REST API geliştirme sürecinde HTTP protokolünde yer alan çeşitli metodlar (GET,PUT,POST,DELETE) etkin bir şekilde kullanılır. Bu şekilde anlamlı URL’ler oluşturulur ve son kullanıcının da anlayabileceği uzantılar kolaylıkla oluşturulur. Örnek olarak https://ornekadres.com/api/makaleler uzantısında görüleceği üzere sunucuya yapılan istek doğrultusunda HTTP protokolündeki metodlardan biri olan GET işlemi gerçekleşmektedir. Bu sayede sunucudaki makaleler listelenmekte ve client ile bu yanıt son kullanıcıya sunulmaktadır. İstemci (client), sunucuya (server,API) isteklerini veri olarak gönderir. Sunucu bu istemci girdisini kullanarak dahili işlevleri başlatır ve çıktı verilerini tekrar istemciye gönderir. İstemci-sunucu arasındaki iletişim bu şekilde sağlanır.

RESTful olarak geliştirilmiş bir API üzerinden genellikle JSON tipinde dönüş yapılması tercih edilir. Fakat amaca ve isteğe göre XML, CSV, HTML veya düz bir metin olarak da dönüş sağlanabilir.

SOAP API Nedir?

SOAP (Simple Object Access Protocol)(Basit Nesne Erişim Protokolü), en temel anlamda internet üzerinden küçük miktarda bilgileri ya da mesajları aktarma protokolüdür. SOAP mesajları XML formatındadırlar ve genellikle HTTP(Hypertext Transfer Protocol) protokolü (bazen de TCP/IP) kullanılarak gönderilirler. SOAP, XML tabanlı kullanıma mecbur bırakır. Bu konuda esnek değildir.

SOAP, web servis çağrılarında RPC (Remote Procedure Call) modelini kullanan, istemci/sunucu mantığına dayalı bir protokol olarak ifade edilebilir. Uzaktan Yordam Çağrısı olarak Bilinen RPC, bir ağdaki bilgisayarların ağ ayrıntılarını bilmeden birbirleri arasında program isteği yapmasına olanak tanır. “Remote Procedure Call” olarak bilinen bu hizmet, esasında sunucu ve istemcilerin başarılı bir iletişim kurabilmesi için dizayn edilmiştir.

Metotların call edilmesi üzerine alınan response da dahil sürecin tamamı XML olarak ve genellikle HTTP (Hyper Text Transfer Protocol) protokolü (bazen de TCP/IP) kullanılarak iletilir. XML yapısı sebebiyle REST’e kıyasla daha katı bir işleyişe sahip olduğu için pek tercih edilmemektedir.

Güvenlik açısından, SOAP protokolü web hizmeti (WS) güvenliğine ve güvenli yuva katmanlarına (SSL) dayanır. SOAP üzerinden gönderilen veriler uçtan uca şifrelenir. Bu nedenle, amaç işlevsellik yerine ekstra güvenlik katmanları olduğunda SOAP kullanmak iyi bir fikirdir.

REST ile SOAP Farkları Nelerdir?

1. Veri Formatı

SOAP, verileri bir XML belgesi olarak göndermek için WSDL (Web Services Description Language)(Web Servisleri Tanımlama Dili)’ye güvenir. REST, JSON, HTML ve XML dahil olmak üzere birçok veri biçimini destekler.

Güvenlik: SOAP üzerinde güvenlik(security) sağlamak daha kolay ve hızlı şekilde olabiliyorken, bu durum REST için karmaşık olabilmektedir. REST için güvenlik söz konusu olduğunda SOAP’a göre biraz zayıf kalmaktadır.

2. Talep Yapısı

İstenen yanıt için her API stilinin kendi istek formatı vardır.

SOAP’ın istek mimarisi, bir HTML belgesinin yapısına benzer. Ve aşağıdaki parçalara sahiptir:

  • Zarf : Gelen SOAP verilerinin yapısını tanımlar. Sonucunda, bir alıcıya XML’de olduğunu bildirir.
  • Başlık : SOAP API hakkında ek bilgi taşır. Bu, kimlik doğrulama ve bağlantı belirteçlerini içerebilir.
  • İstek gövdesi : İsteğin ana içeriğini açıklar. Bu nedenle, yanıtta yer alan bilgileri doğrular.
  • Fault : SOAP API içindeki olası hata bilgilerinin ayrıntılarını verir.

REST API’nin mesaj yapısı şöyle görünür:

  • API uç noktası : Uygulama veya veri sağlayıcı içindeki belirli bir kaynağa bağlanan bir bağlayıcı.
  • İstek yöntemi : Bir uygulamadan gelen isteğin türünü tanımlar. Bunlar POST, GET, PUT veya DELETE olabilir.
  • Başlıklar : API sağlayıcısının özelliklerine bağlı olarak içerik türünü, kimlik doğrulama belirteçlerini ve belki daha fazlasını ayrıntılarıyla belirtir.
  • Gövde : İstek yükü olarak da adlandırılır. REST API’den almak veya REST API’ye göndermek istediğiniz bilgileri açıklar.

3. Güvenlik

SOAP, SSL’ye ek olarak, veri alışverişi sırasında uçtan uca şifreleme sağlamak için WS güvenlik uzantısını kullanır. REST, güvenlik için büyük ölçüde HTTPS’ye güvenir. Ek olarak, SOAP’ın ACID(Atomicity, Consistency, Isolation, Durability) kılavuzuna uygunluğu onu protokole bağlı kılar. REST, ACID uyumlu değil, belirli kurallar olmadan mimari tabanlıdır. Sonuç olarak REST, SOAP’dan daha hızlı ve kolaydır fakat SOAP, REST’e kıyasla güvenlik konusunda daha başarılı olmaktadır.

  • SOAP için birçok geliştirme aracı mevcuttur, REST için geliştirme araçlarına ihtiyaç duyulmaz, tasarlaması kolaydır.
  • Her ikisi de HTTP protokolünü kullanırlar. Fakat REST için HTTP zorunluluğu varken SOAP; TCP, SMTP gibi başka protokollerle de çalışabilir.
  • Test ve hata ayıklama aşaması REST için daha kolaydır. Çünkü HTTP hatalarını döndürür ve bunlar bir toola ihtiyaç duyulmadan görülebilir. SOAP için hata ayıklama araçları gerekebilir.