REST API
Representational State Transfer 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
Önemli noktalar
- REST bir mimari stildir; protokol ya da resmi bir standart değildir.
- Kaynaklar
/users/42gibi 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
# 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/42Sı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
- REST vs GraphQLREST, her biri sabit biçimde veri döndüren birçok URL sunar; GraphQL ise istemcinin tam olarak ihtiyaç duyduğu alanları istediği tek bir endpoint sunar.
- REST vs gRPCREST kaynakları HTTP üzerinden, genelde JSON ile sunar; gRPC ise tipli uzak fonksiyonları HTTP/2 ile ikili mesajlarla çağırır: daha hızlı ama tarayıcıda zor.
- REST vs SOAPREST, 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.
İlgili sayfalar
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- EndpointBackend ve API'ler, s. 11Endpoint, bir API'nin belirli bir kaynak veya eylem için istek alıp yanıt döndürdüğü, bir HTTP metoduyla birlikte kullanılan belirli bir URL'dir.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- GraphQLBackend ve API'ler, s. 18GraphQL, istemcilerin tam ihtiyaç duyduğu veriyi, çoğunlukla tek bir endpoint üzerinden tek istekte istemesini sağlayan API sorgu dili ve çalışma zamanıdır.
- SayfalamaBackend ve API'ler, s. 41Sayfalama, büyük bir sonuç kümesini daha küçük sayfalara bölme uygulamasıdır; böylece bir API veya web sitesi her istekte yönetilebilir sayıda öğe döndürür.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin