Article cover

22.06.2023

13

Like

586

Views

API NEDİR ? RESTful API NEDİR ?

API (Application Programming Interface) Uygulama programlama arabirimi, diğer yazılım sistemleriyle iletişim kurmak için uymanız gereken kuralları tanımlar. Geliştiriciler, diğer uygulamaların kendi uygulamalarıyla programlama yoluyla iletişim kurabilmesi için API’ler sunar veya oluşturur.

Bir web API’sini, web’deki istemciler ile kaynaklar arasındaki bir ağ geçidi olarak düşünebilirsiniz.


İstemciler

İstemciler, web’deki bilgilere erişmek isteyen kullanıcılardır. İstemci, API’yi kullanan bir kişi veya yazılım sistemi olabilir. Örneğin, geliştiriciler bir hava durumu sistemindeki hava durumu verilerine erişen programlar yazabilir. Ya da doğrudan hava durumu web sitesini ziyaret ettiğinizde aynı verilere tarayıcınızdan erişebilirsiniz.


Kaynaklar

Kaynaklar, farklı uygulamaların istemcilerine sağladığı bilgilerdir. Kaynaklar; görüntü, video, metin, sayı veya herhangi türde bir veri olabilir. Kaynağı istemciye sunan makineye ise sunucu adı verilir. Kuruluşlar; güvenlik, denetim ve kimlik doğrulaması sağlarken kaynakları paylaşmak ve web hizmetleri sunmak için API’leri kullanır. Ek olarak, API’ler kuruluşların belirli dahili kaynaklara hangi istemcilerin erişebileceğini belirlemesine de yardımcı olur.

API Temel Konumu


RESTful API Nedir?

RESTful API, iki bilgisayar sisteminin internet üzerinden güvenli bir şekilde bilgi alışverişi yapmak için kullandığı bir arabirimdir. Çoğu iş uygulaması, çeşitli görevleri gerçekleştirmek için diğer dahili ve üçüncü taraf uygulamalarla iletişim kurmak zorundadır ve bunu REST standartlarında yapılan API’ lere REST API denir. REST mimarisini uygulayan web hizmetlerine RESTful denir. RESTful API terimi genellikle RESTful web API’lerini ifade eder. Bununla birlikte, REST API ve RESTful API terimlerini birbirinin yerine kullanabilirsiniz.

Peki REST Ne ???


REST nedir ?

Temsili Durum Aktarımı (REST), bir API’nin nasıl çalışması gerektiğine ilişkin koşulları uygulamaya koyan bir yazılım mimarisidir. REST, başlangıçta internet gibi karmaşık bir ağdaki iletişimi yönetmek için bir kılavuz olarak oluşturulmuştu. REST tabanlı mimariyi yüksek performanslı ve güvenilir iletişimi doğru ölçekte desteklemek için kullanabilirsiniz. Bu mimariyi kolayca uygulayabilir, değiştirebilir ve böylece, herhangi bir API sistemine görünürlük ve platformlar arası taşınabilirlik sağlayabilirsiniz.

API geliştiricileri, birkaç farklı mimariyi kullanarak API’ler tasarlayabilir. REST mimari stiline uygun API’lere REST API’ler adı verilir. REST mimarisini uygulayan web hizmetlerine RESTful web hizmetleri adı verilir. RESTful API terimi genellikle RESTful web API’lerini ifade eder.

REST mimari stiline ilişkin ilkelerden bazılarını aşağıda bulabilirsiniz:


Tek biçimli arabirim

Tek biçimli arabirim, herhangi bir RESTful web hizmetinin tasarımı için esastır. Sunucunun, bilgileri standart bir formatta aktardığını belirtir. Biçimlendirilen kaynağa REST’te gösterim adı verilir. Bu format, kaynağın sunucu uygulamasındaki dahili gösteriminden farklı olabilir. Örneğin, sunucu, verileri metin olarak saklarken HTML gösterim formatında gönderebilir.

Tek biçimli arabirimde dört mimari kısıtlama bulunur:

  1. İstekler, kaynakları tanımlamalıdır. Bunu, tek biçimli bir kaynak tanımlayıcı kullanarak yaparlar.
  2. İstemciler, istedikleri takdirde kaynağı değiştirmek veya silmek için kaynak gösteriminde yeterli bilgiye sahiptir. Sunucu bu koşulu, kaynağı daha ayrıntılı şekilde açıklayan meta veriler göndererek karşılar.
  3. İstemciler, gösterimi daha fazla işlemeye yönelik bilgiler alır. Sunucu bunu, istemcinin bu bilgileri en iyi nasıl kullanabileceği hakkında meta veriler içeren açıklayıcı mesajlar göndererek gerçekleştirir.
  4. İstemciler, bir görevi tamamlamak için ihtiyaç duydukları diğer tüm ilgili kaynaklar hakkında bilgi alır. Sunucu bunu, istemcilerin dinamik olarak daha fazla kaynak keşfedebilmesi için gösterimde bağlantılar göndererek başarır.


Durumsuzluk

REST mimarisinde durumsuzluk, sunucunun her istemci isteğini önceki tüm isteklerden bağımsız olarak tamamladığı bir iletişim yöntemini ifade eder. İstemciler, kaynakları istedikleri sırada talep edebilir ve her istek ya durumsuzdur ya da diğer isteklerden yalıtılmıştır. Bu REST API tasarımı kısıtlaması, sunucunun isteği her seferinde tam olarak anlayabileceği ve yerine getirebileceği anlamına gelir.


Katmanlı sistem

Katmanlı bir sistem mimarisinde istemci, kendisiyle sunucu arasındaki diğer yetkili aracılara bağlayabiliriz ve sunucudan yanıt almaya devam edebiliriz. Sunucular, istekleri diğer sunuculara da aktarabilir. RESTful web hizmetimizi, istemci isteklerini yerine getirmek için birlikte çalışan güvenlik, uygulama ve iş mantığı gibi birden çok katmana sahip birkaç sunucuda çalışacak şekilde tasarlayabiliriz. Bu katmanlar, istemci tarafından görülmez.


Önbelleğe alınabilirlik

RESTful web hizmetleri, sunucu yanıt süresini iyileştirmek için bazı yanıtları istemcide veya bir aracıda saklama süreci olan önbelleğe almayı destekler. Her sayfada ortak üst bilgi ve alt bilgi görüntüleri olan bir web sitesini ziyaret ettiğinizi varsayalım. Yeni bir web sitesi sayfasını her ziyaret ettiğinizde, sunucunun aynı görüntüleri yeniden göndermesi gerekir. Bunu önlemek için istemci, ilk yanıttan sonra bu görüntüleri önbelleğe alır veya depolar ve ardından görüntüleri doğrudan önbellekten kullanır. RESTful web hizmetleri, önbelleğe alma sürecini kendilerini önbelleğe alınabilir veya önbelleğe alınamaz olarak tanımlayan API yanıtlarını kullanarak kontrol eder.


İstek üzerine kod

REST mimari stilinde sunucular, yazılım programlama kodunu istemciye aktararak istemci işlevselliğini geçici olarak uzatabilir veya özelleştirebilir. Örneğin, herhangi bir web sitesindeki bir kayıt formunu doldurduğunuzda, tarayıcınız yaptığınız hataları (ör. yanlış Kimlik Numarası, Kayıtlı e-mail vb.) hemen öne çıkarır. Tarayıcınız bunu, sunucu tarafından gönderilen kod sayesinde yapar.

REST api Temsili


RESTful API’lerin avantajları nelerdir?

RESTful API’lerin avantajlarından bazıları şunlardır:


Ölçeklenebilirlik

REST, istemci-sunucu etkileşimlerini optimize ettiğinden, REST API’leri uygulayan sistemler verimli şekilde ölçeklendirme yapabilir. Durumsuzluk; sunucunun, geçmiş istemci istek bilgilerini saklaması gerekmediğinden sunucu yükünü ortadan kaldırır. İyi yönetilen önbelleğe alma süreci, bazı istemci-sunucu etkileşimlerini kısmen veya tamamen ortadan kaldırır. Tüm bu özellikler, performansı azaltan iletişim tıkanıklıklarına neden olmadan ölçeklendirmeyi destekler.


Esneklik

RESTful web hizmetleri, toplam istemci-sunucu ayrımını destekler. Bu hizmetler, her bir parçanın bağımsız olarak gelişebilmesi için çeşitli sunucu bileşenlerini basitleştirir ve birbirinden ayırır. Sunucu uygulamasındaki platform veya teknoloji değişiklikleri, istemci uygulamasını etkilemez. Uygulama işlevlerini katmanlama özelliği, esnekliği daha da artırır. Örneğin, geliştiriciler uygulama mantığını yeniden yazmadan veritabanı katmanında değişiklikler yapabilir.


Bağımsızlık

REST API’ler, kullanılan teknolojiden bağımsızdır. API tasarımını etkilemeden hem istemci hem de sunucu uygulamalarını çeşitli programlama dillerinde yazabilirsiniz. Ayrıca, iletişimi etkilemeden her iki taraftaki temel teknolojiyi de değiştirebilirsiniz.

Daha detaylı açıklamayı aşağıda videoda bulabilirsiniz.


RESTful API’ler nasıl çalışır?

Bir RESTful API’nin temel işlevi, internette gezinmeyle aynıdır. İstemci, bir kaynağa ihtiyaç duyduğunda API’yi kullanarak sunucu ile iletişime geçer. API geliştiricileri, istemcinin REST API’yi nasıl kullanması gerektiğini sunucu uygulamasının API belgelerinde açıklar. Herhangi bir REST API çağrısına yönelik genel adımlar şunlardır:

  1. İstemci, sunucuya bir istek gönderir. İstemci, isteği sunucunun anlayacağı şekilde biçimlendirmek için API belgelerine uyar.
  2. Sunucu, istemcinin kimliğini doğrular ve istemcinin bu istekte bulunma hakkı olduğunu onaylar.
  3. Sunucu, isteği alır ve dahili olarak işler.
  4. Sunucu, istemciye bir yanıt verir. Yanıt, istemciye isteğin başarılı olup olmadığını söyleyen bilgileri içerir. Yanıt aynı zamanda, istemcinin talep ettiği bilgileri de içerir.

REST API isteği ve yanıt ayrıntıları, API geliştiricilerinin API’yi nasıl tasarladığına bağlı olarak farklılıklar gösterir. Buda çok normal bir durumdur.


RESTful API istemci isteği neleri içerir?

RESTful API’ler, isteklerin aşağıdaki ana bileşenleri içermesini gerektirir:


Benzersiz kaynak tanımlayıcısı

Sunucu, her bir kaynağı benzersiz kaynak tanımlayıcılarla tanımlar. REST hizmetlerinde sunucu, kaynak tanımlamasını genellikle Tekdüzen Kaynak Konum Belirleyicisi’ni (URL) kullanarak gerçekleştirir. URL, kaynağa giden yolu belirtir. URL, herhangi bir web sayfasını ziyaret etmek için tarayıcınıza girdiğiniz web sitesi adresine benzer. URL’ye aynı zamanda istek uç noktası (End Point) adı da verilir ve URL, istemcinin ne gerektirdiğini sunucuya açıkça belirtir.


Yöntem

Geliştiriciler, RESTful API’leri genellikle Köprü Metin Aktarım Protokolü’nü (HTTP) kullanarak uygular. Bir HTTP yöntemi, sunucuya kaynağa ne yapması gerektiğini söyler. Başlıca dört HTTP yöntemi şunlardır:

GET

İstemciler, sunucuda belirtilen URL’de yer alan kaynaklara erişmek için GET isteğini kullanır. İstemciler, GET isteklerini önbelleğe alabilir ve sunucuya verileri göndermeden önce filtreleme talimatı vermek için RESTful API isteğinde parametreler gönderebilir.

POST

İstemciler, verileri sunucuya göndermek için POST isteğini kullanır. Veri gösterimini de isteğe dahil ederler. Aynı POST isteğini birden fazla kez göndermek, aynı kaynağın birden fazla kez oluşturulmasına neden olur.

PUT

İstemciler, sunucudaki mevcut kaynakları güncellemek için PUT yöntemini kullanır. POST’un aksine, RESTful web hizmetinde aynı PUT isteğini birden fazla kez göndermek aynı sonucu doğurur.

DELETE

İstemciler, kaynağı kaldırmak için DELETE isteğini kullanır. Bir DELETE isteği, sunucunun durumunu değiştirebilir. Bununla birlikte, kullanıcı uygun kimlik doğrulamasına sahip değilse istek başarısız olur.

Rest Metod Temsili


HTTP üst bilgileri

İstek üst bilgileri, istemci ile sunucu arasında alışverişi yapılan meta verilerdir. Örneğin, istek üst bilgisi, isteğin ve yanıtın formatını belirtir ve isteğin durumu vb. hakkında bilgi verir.

Veri

REST API istekleri; POST, PUT ve diğer HTTP yöntemlerinin başarıyla çalışması için gereken verileri içerebilir.

Parametreler

RESTful API istekleri, sunucuya yapılması gerekenler hakkında daha fazla ayrıntı sunan parametreleri içerebilir. Farklı parametre türlerinden bazıları şunlardır:

  • URL ayrıntılarını belirten yol parametreleri.
  • Kaynak hakkında daha fazla bilgi isteyen sorgu parametreleri.
  • İstemcilerin kimliğini hızla doğrulayan çerez parametreleri.


RESTful API kimlik doğrulama yöntemleri nelerdir ?

Bir RESTful web hizmeti, bir yanıt göndermeden önce istekleri doğrulamalıdır. Kimlik doğrulama, bir kimliği doğrulama sürecidir. Örneğin, nüfus cüzdanı veya ehliyet göstererek kimliğinizi doğrulayabilirsiniz. Benzer şekilde, RESTful hizmet istemcileri de güven oluşturmak için sunucuya kimliğini kanıtlamalıdır.

RESTful API’lerin başlıca dört kimlik doğrulama yöntemi vardır:


HTTP kimlik doğrulaması

HTTP, REST API’yi uygularken doğrudan kullanabileceğiniz bazı kimlik doğrulama şemalarını tanımlar. Bu şemalardan ikisi aşağıda verilmiştir:

Temel kimlik doğrulaması

Temel kimlik doğrulamasında, istemci kullanıcı adını ve parolayı istek üst bilgisinde gönderir. Bu bilgileri, güvenli aktarım için 64 karakterlik diziye dönüştüren bir kodlama tekniği olan base64 ile kodlar.

Taşıyıcı kimlik doğrulaması

Taşıyıcı kimlik doğrulaması terimi, belirteç taşıyıcısına erişim denetimi verme sürecini ifade eder. Taşıyıcı belirteci, genellikle sunucunun bir oturum açma isteğine yanıt olarak oluşturduğu şifrelenmiş bir karakter dizisidir. İstemci, kaynaklara erişmek için belirteci istek üst bilgilerinde gönderir.


API anahtarları

API anahtarları, REST API kimlik doğrulaması için kullanılan bir başka seçenektir. Bu yaklaşımda, sunucu ilk kez istekte bulunan istemciye benzersiz bir değer atar. İstemci, kaynaklara her erişmeye çalıştığında kendisini doğrulamak için benzersiz API anahtarını kullanır. API anahtarları, sunucunun anahtarı aktarması gerektiğinden ve bu da anahtarı ağ hırsızlığına karşı savunmasız hale getirdiğinden daha az güvenlidir.


OAuth

OAuth, herhangi bir sisteme yüksek güvenlikli giriş erişimi için parolaları ve belirteçleri birleştirir. Sunucu, ilk olarak bir parola talep eder ve ardından kimlik doğrulama sürecini tamamlamak için ek bir belirteç ister. Belirteci, belirli bir kapsam ve yaşam süresi dahilinde istediği zaman ve ayrıca zaman içinde kontrol edebilir. Detaylar için Bakınız .


RESTful API sunucu yanıtı neleri içerir?

REST ilkeleri, sunucu yanıtının şu ana bileşenleri içermesini gerektirir:


Durum satırı

Durum satırı, isteğin başarılı veya başarısız olduğunu belirten üç haneli bir durum kodu içerir. Örneğin, 2XX kodları başarıyı ifade ederken 4XX ve 5XX kodları hataları belirtir. 3XX kodları ise URL yönlendirmesini ifade eder.

Başlıca durum kodlarından bazıları aşağıdaki gibidir:

  • 200: Genel başarı yanıtı
  • 201: POST yöntemi başarılı yanıtı
  • 400: Sunucunun işleyemediği yanlış istek
  • 404: Kaynak bulunamadı


Mesaj gövdesi

Yanıt gövdesi, kaynak gösterimini içerir. Sunucu, istek üst bilgilerinin ne içerdiğine bağlı olarak uygun bir gösterim formatı seçer. İstemciler, bilgileri verilerin düz metin olarak nasıl yazılacağını tanımlayan XML veya JSON formatında talep edebilir. Örneğin, istemci Yakup adında bir kişinin adını ve yaşını talep ederse sunucu, aşağıdaki gibi bir JSON gösterimi sunar:

JSON Veri Temsili


Üst Bilgiler

İstek, yanıtla ilgili üst bilgileri veya meta verileri de içerir. Bunlar, yanıt hakkında daha fazla bağlam sunar ve sunucu, kodlama, tarih ve içerik türü gibi bilgileri de içerir.


Şimdilik bu kadar. Umarım yararlı olmuştur. Bende kendimi geliştirmeye çalışıyorum. Herkese mutlu günler…

Yazı Linki...

Java ile Backend Web Development Projeleri
Java Spring Boot
Java 102

Comments

You need to log in to be able to comment!

Yakup Berber

Yazılım için geç kalmadığımı umuyorum.

Location

Şırnak, TR

Education

Uluslararası İlişkiler - Anadolu Üniversitesi

İşletme - Anadolu Üniversitesi

Bilgisayar Programcılığı - Erzurum Üniversitesi

© 2021 Patika Dev

facebook
twitter
instagram
youtube
linkedin