REST teknolojisi ve RESTful Api nedir ?
REST teknolojisi, yani Representational State Transfer (Temsili Durum Transferi), web üzerinde veri transferini daha düzenli, anlaşılır ve uyumlu hale getiren bir mimari tarz. 2000 yılında Roy Fielding tarafından ortaya atılan bu model, özellikle web üzerindeki veri alışverişi ve sistemler arası iletişimde oldukça popülerdir. REST’in temel amacı, internet üzerinden verileri belirli standartlarla aktarıp düzenleyerek farklı sistemlerin birbiriyle daha kolay iletişim kurmasını sağlamak. REST mimarisini kullanan servislere RESTful servis veya RESTful API denir. Özellikle mobil uygulamalar, web siteleri, hatta bazı oyunlar bile, arkada çalışan bir RESTful API sayesinde veri alıp gönderir. REST format kısıtlaması koymamakla birlikte servise yapılan istekler genellikle JSON veya XML olarak geri döner.
Çalışma Mantığı: Temel İlkeler
REST mimarisi, client-server (istemci-sunucu) modeli üzerinde çalışır ve bazı temel kurallara dayanır. Bu modelde bir taraf (istemci) veri talep ederken diğer taraf (sunucu) bu veriyi sağlar. REST, istemci ve sunucunun birbiriyle iletişim kurarken belirli bir düzenle (HTTP protokolü ve çeşitli HTTP metotları) veri alışverişi yapmasını sağlar.
REST mimarisinin bazı temel ilkeleri şunlardır:
- Stateless (Durumsuzluk): Her bir istek bağımsızdır ve sunucu her isteği ayrı olarak işler. Yani, sunucu, istemcinin önceki istekte ne yaptığını “hatırlamaz.” İstemci her istekte kimliğini ve gerekli bilgileri tekrar göndermek zorundadır. Bu, sistemin daha ölçeklenebilir olmasını sağlar.
- Uniform Interface (Birbirine Benzeyen Arayüz): REST’te tüm kaynaklar için standart bir URL yapısı kullanılır. Örneğin, tüm kullanıcılar için
/users, belirli bir kullanıcı için/users/{id}gibi. Bu, her kaynağa aynı standartlarla erişmeyi sağlar. - Cacheable (Önbelleklenebilir): Bazı yanıtlar önbelleğe alınabilir. Bu, sistem performansını artırır çünkü sık sık değişmeyen verilere ait isteklerde sunucuya tekrar tekrar gitmek gerekmez.
- Layered System (Katmanlı Sistem): İstemci, sunucunun doğrudan mı yoksa başka bir aracı sunucu (proxy veya cache) üzerinden mi bağlandığını bilmez. Bu katmanlı yapı, güvenlik ve performans için yararlıdır.
Client-Server İlişkisi
REST mimarisi, istemci ve sunucu arasında katı bir görev dağılımı sağlar:
- İstemci (Client): Kullanıcıdan gelen talepleri sunucuya ileten ve sunucudan aldığı yanıtları işleyen taraftır. İstemci, web tarayıcıları, mobil uygulamalar veya başka bir API talep eden yazılım olabilir.
- Sunucu (Server): İstemciden gelen istekleri karşılayıp ilgili kaynakları döndüren taraftır. Sunucu, veritabanına erişip verileri işleyebilir, istemcinin isteğini doğrulayıp buna göre yanıt verebilir.
HTTP Metotları ve REST
REST, HTTP protokolü üzerine kurulu olduğundan, HTTP’nin sağladığı dört ana metodu kullanır. Bu metotlar, sistemin hangi tür işlemi yapacağını belirtir:
- GET: Bir kaynağı istemek için kullanılır. Örneğin,
/users/123gibi bir istekle 123 numaralı kullanıcıya ait bilgileri talep edebiliriz.GETistekleri güvenlidir (veri değişikliği yapmaz) ve idempotenttir (birden fazla kez aynı sonucu verir). - POST: Yeni bir kaynak oluşturmak için kullanılır. Örneğin,
/usersadresinePOSTisteği ile yeni bir kullanıcı kaydı yapılabilir.POST, veri değişikliği yaptığı için idempotent değildir. - PUT: Mevcut bir kaynağı güncellemek için kullanılır.
/users/123adresinePUTisteği yaparak 123 numaralı kullanıcıyı güncelleyebiliriz.PUTde idempotenttir. - DELETE: Bir kaynağı silmek için kullanılır. Örneğin,
/users/123adresineDELETEisteği yapıldığında, 123 numaralı kullanıcı silinir.DELETEde idempotenttir.
HTTP Durum Kodları (Status Codes)
REST API’ler, istemciye işlem sonucunu bildirmek için HTTP durum kodları kullanır. Bu kodlar sayesinde istemci, yaptığı işlemin sonucunu kolayca anlayabilir:
- 200 OK: İşlem başarılı, her şey yolunda.
- 201 Created: Yeni bir kaynak başarıyla oluşturuldu.
- 204 No Content: Silme işlemi gibi bir işlem başarıyla yapıldı, ancak geri dönecek içerik yok.
- 400 Bad Request: İstemci tarafından yanlış bir istek yapıldı, eksik veya hatalı parametreler olabilir.
- 401 Unauthorized: Erişim için kimlik doğrulama gerekli.
- 403 Forbidden: İstemcinin bu kaynağa erişim izni yok.
- 404 Not Found: İstenen kaynak sunucuda bulunamadı.
- 500 Internal Server Error: Sunucuda bir hata meydana geldi.