Ana içeriğe geç

REST API

Representational State Transfer API

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/rest-api

Kısaca

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 nedir?

REST API, bir uygulamanın verilerini kullanıcılar, siparişler ya da ürünler gibi kaynaklar halinde düzenler ve her birine kendi URL'sini verir. İstemciler bu kaynaklarla HTTP istekleri göndererek çalışır; sunucu ise genellikle JSON biçiminde veriyle yanıt verir. REST, Roy Fielding'in 2000 yılında tanımladığı bir mimari stil olan Representational State Transfer'in kısaltmasıdır.

HTTP metodu sunucuya ne yapılacağını söyler: GET bir kaynağı okur, POST yeni bir tane oluşturur, PUT veya PATCH günceller, DELETE ise siler. Yanıttaki 200 OK, 201 Created ya da 404 Not Found gibi durum kodları sonucu bildirir. Her istek durumsuzdur (stateless); yani sunucunun ihtiyaç duyduğu her şeyi, örneğin bir kimlik doğrulama token'ını, kendisi taşır. Böylece sunucunun önceki istekleri hatırlaması gerekmez.

REST API'yi bir kütüphane kataloğuna benzetebilirsiniz: her kitabın sabit bir raf adresi vardır ve küçük bir standart eylem kümesi (arama, ekleme, güncelleme, kaldırma) her kitap için aynı şekilde çalışır. Bu öngörülebilirlik, REST'i herkese açık web API'leri ile bir frontend'in backend'iyle iletişimi için en yaygın stil haline getirir.

REST çoğu zaman GraphQL ile karşılaştırılır. REST API'nin her biri sabit biçimde veri döndüren birçok endpoint'i vardır; GraphQL API'sinde ise genellikle tek bir endpoint bulunur ve istemci hangi alanları istediğini tam olarak belirtir. REST'i önbelleğe almak ve anlamak daha kolaydır; GraphQL ise karmaşık, iç içe verilerde istek sayısını azaltabilir.

Bir bakışta

users kaynağına dört REST isteği: GET /users listeyi 200 OK ile döndürür, POST /users yeni bir kullanıcı oluşturup 201 Created döndürür, GET /users/42 o kullanıcıyı 200 OK ile JSON olarak döndürür, DELETE /users/42 ise onu silip 204 No Content döndürür.istek: metot + URLyanıt: durum kodu + JSONlisteyi okurGET /users200 OK[{ "id": 41 }, { "id": 42 }]kullanıcı oluştururPOST /users201 Created{ "id": 43 }42'yi okurGET /users/42200 OK{ "id": 42, "name": "Ada" }42'yi silerDELETE /users/42204 No Content
URL kaynağı adlandırır, HTTP metodu onunla ne yapılacağını söyler; yanıttaki durum kodu ve JSON sonucu bildirir.

Önemli noktalar

  • REST bir mimari stildir; protokol ya da resmi bir standart değildir.
  • Kaynaklar /users/42 gibi URL'lerle tanımlanır.
  • HTTP metotları (GET, POST, PUT, PATCH, DELETE) eylemi belirtir.
  • İstekler durumsuzdur: her biri sunucunun ihtiyaç duyduğu tüm bilgiyi taşır.
  • Yanıtlar genellikle JSON ve bir HTTP durum kodu içerir.

Örnek

curl ile bir REST API'yi çağırmakbash
# Read a list of users
curl https://api.example.com/users

# Read one user by ID
curl https://api.example.com/users/42

# Create a new user by sending JSON
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Ada"}'

# Delete a user
curl -X DELETE https://api.example.com/users/42

Sık sorulan sorular

REST ile RESTful arasındaki fark nedir?

Pratikte aynı anlama gelirler. REST mimari stildir; RESTful olarak tanımlanan bir API ise kaynak URL'leri, standart HTTP metotları ve durumsuz istekler gibi ilkelerini izleyen API'dir.

REST API ile GraphQL arasındaki fark nedir?

REST API, her biri sabit biçimde veri döndüren birçok endpoint sunar; GraphQL ise genellikle tek bir endpoint sunar ve istemci tam olarak ihtiyaç duyduğu alanları ister. REST daha basittir ve önbelleğe alması daha kolaydır; GraphQL karmaşık, iç içe veriler için daha esnektir.

PUT ile PATCH arasındaki fark nedir?

PUT tüm kaynağı gönderdiğiniz veriyle değiştirirken PATCH yalnızca eklediğiniz alanları günceller. Birçok API kısmi güncellemeler için PATCH, tam değiştirme için PUT kullanır.

Sık karşılaştırılanlar

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar