1. REST API Nedir?
REST API, REST (Representational State Transfer) mimari yaklaşımına uygun olarak tasarlanan bir uygulama programlama arayüzüdür. API, farklı yazılımların belirli kurallar üzerinden birbiriyle iletişim kurmasını sağlar.
Örneğin, bir e-ticaret uygulamasında ürünleri görüntülemek, sepete ürün eklemek veya sipariş bilgilerini almak için REST API kullanılabilir. Uygulama, sunucuya bir istek gönderir ve sunucudan gelen yanıtı kullanıcıya gösterir.
REST API'ler genellikle HTTP veya HTTPS protokolü üzerinden çalışır. Veriler çoğunlukla JSON formatında aktarılır. Ancak REST API'lerin yalnızca JSON kullanması zorunlu değildir.
2. REST API Nasıl Çalışır?
REST API, istemci ile sunucu arasındaki istek ve yanıt mekanizması üzerinden çalışır. İstemci bir web sitesi, mobil uygulama veya başka bir yazılım olabilir.
İşleyiş genel olarak şu adımlardan oluşur:
- İstek gönderilir: İstemci, belirli bir kaynağa erişmek için API adresine HTTP isteği gönderir.
- İstek işlenir: Sunucu, isteği ve kullanıcının yetkilerini kontrol eder.
- İşlem gerçekleştirilir: İstenen veri alınır, yeni bir kayıt oluşturulur veya mevcut veri güncellenir.
- Yanıt döndürülür: Sunucu, işlemin sonucunu ve uygun HTTP durum kodunu istemciye iletir.
Örneğin, bir uygulamanın ürün listesini alması için GET /products adresine istek gönderilebilir. Sunucu, ürün bilgilerini JSON formatında döndürebilir.
3. REST API'nin Temel Özellikleri Nelerdir?
REST mimarisi, uygulamalar arasında düzenli ve standart bir iletişim kurulmasını amaçlar. REST API tasarımında öne çıkan özellikler şunlardır:
3.1. İstemci ve Sunucu Ayrımı
İstemci, kullanıcı arayüzünü ve kullanıcı etkileşimlerini yönetirken sunucu verileri ve iş mantığını yönetir. Bu ayrım, iki tarafın birbirinden bağımsız geliştirilmesini kolaylaştırır.
3.2. Durumsuzluk (Stateless)
REST mimarisinde her istek, işlenmesi için gereken bilgileri kendi içinde taşımalıdır. Sunucu, önceki istemci isteğinin oturum durumunu saklamaya bağımlı olmadan isteği değerlendirebilmelidir.
Kimlik doğrulama bilgileri gibi gerekli veriler, kullanılan güvenlik modeline uygun şekilde her istekte iletilebilir.
3.3. Kaynak Tabanlı Yapı
REST API'lerde kullanıcılar, ürünler ve siparişler gibi varlıklar kaynaklar olarak ele alınır. Bu kaynaklara genellikle URL adresleri üzerinden erişilir.
Örneğin:
- /users: Kullanıcı koleksiyonu
- /products: Ürün koleksiyonu
- /orders: Sipariş koleksiyonu
Belirli bir ürüne erişmek için /products/15 gibi bir adres kullanılabilir.
3.4. Standart HTTP Kullanımı
REST API'ler, veri üzerinde işlem yapmak için HTTP metotlarından yararlanır. Standart metotların kullanılması, API'nin anlaşılmasını ve farklı sistemlerle entegre edilmesini kolaylaştırır.
3.5. Önbellekleme (Caching)
Uygun şekilde yapılandırılan yanıtlar önbelleğe alınabilir. Böylece aynı verinin tekrar tekrar sunucudan alınması önlenebilir ve performans artırılabilir. Ancak önbellekleme, verinin güncelliği ve güvenliği dikkate alınarak tasarlanmalıdır.

4. REST API'de Kullanılan HTTP Metotları Nelerdir?
HTTP metotları, istemcinin sunucudaki kaynak üzerinde hangi işlemi yapmak istediğini belirtir.
4.1. GET
GET, bir kaynağı veya kaynak listesini almak için kullanılır.
Örnek: GET /products
Bu istek, ürün listesini döndürmek için kullanılabilir. GET isteği, sunucudaki verileri değiştirmek amacıyla kullanılmamalıdır.
4.2. POST
POST, sunucuda yeni bir kaynak oluşturmak veya belirli bir işlem başlatmak için kullanılabilir.
Örnek: POST /products
İstek gövdesinde yeni ürünün adı, fiyatı ve diğer bilgileri gönderilebilir.
4.3. PUT
PUT, bir kaynağın mevcut durumunu istekle gönderilen temsile göre değiştirmek veya uygun durumlarda yeni bir kaynak oluşturmak için kullanılabilir.
Örnek: PUT /products/15
Bu işlem, 15 numaralı ürünün temsilini güncellemek için kullanılabilir.
4.4. PATCH
PATCH, bir kaynağın yalnızca belirli alanlarını güncellemek için kullanılır.
Örnek: PATCH /products/15
Bu istekle ürünün yalnızca fiyatı değiştirilebilir; diğer alanların yeniden gönderilmesi gerekmeyebilir.
4.5. DELETE
DELETE, bir kaynağı silmek için kullanılır.
Örnek: DELETE /products/15
Bu istek, 15 numaralı ürünün silinmesini talep eder. İşlemin başarılı olup olmayacağı sunucunun kurallarına ve kullanıcının yetkilerine bağlıdır.
5. REST API Nasıl Tasarlanır?
REST API geliştirirken kaynakların, adreslerin, veri formatlarının ve hata yanıtlarının tutarlı biçimde belirlenmesi gerekir.
5.1. Kaynakları Belirleyin
Öncelikle uygulamanın hangi verileri yöneteceği belirlenmelidir. Kullanıcı, ürün, sipariş ve ödeme gibi varlıklar kaynak olarak tanımlanabilir.
Kaynak adreslerinde genellikle isimler kullanılır. Örneğin /products adresi, ürünlerle ilgili işlemler için kullanılabilir.
5.2. HTTP Metotlarını Doğru Seçin
Her işlem için amacına uygun HTTP metodu kullanılmalıdır. Veri almak için GET, kaynak oluşturmak için POST, güncellemek için PUT veya PATCH, silmek için DELETE tercih edilebilir.
Bu yaklaşım, API'nin daha tahmin edilebilir ve anlaşılır olmasını sağlar.
5.3. Veri Formatını Belirleyin
REST API'lerde JSON, yaygın kullanılan veri formatlarından biridir. İstek ve yanıtların hangi formatta olacağı belirlenmeli, alan adları ve veri türleri tutarlı tutulmalıdır.
Örnek bir JSON yanıtı:
{
"id": 15,
"name": "Kablosuz Kulaklık",
"price": 1299.90
}
Bu yanıt, bir ürünün kimlik numarasını, adını ve fiyatını temsil eder.
5.4. HTTP Durum Kodlarını Kullanın
Sunucu, isteğin sonucunu açıklamak için HTTP durum kodları döndürmelidir.
- 200 OK: İstek başarıyla işlendi.
- 201 Created: Yeni bir kaynak oluşturuldu.
- 204 No Content: İstek başarılı oldu, yanıt gövdesi gönderilmedi.
- 400 Bad Request: İstek geçersiz veya hatalı.
- 401 Unauthorized: Geçerli kimlik doğrulaması bulunmuyor.
- 403 Forbidden: İstek için gerekli izin yok.
- 404 Not Found: İstenen kaynak bulunamadı.
- 500 Internal Server Error: Sunucuda beklenmeyen bir hata oluştu.
Uygun durum kodları, istemcinin sonuçları doğru yorumlamasına yardımcı olur.
5.5. API'yi Test Edin
API geliştirme sürecinde farklı istekler gönderilerek sonuçlar test edilmelidir. Başarılı işlemlerin yanında hatalı veriler, yetkisiz erişim denemeleri ve bulunmayan kaynaklar da kontrol edilmelidir.
Test sürecinde Postman gibi araçlardan veya otomatik test kodlarından yararlanılabilir.
6. REST API Güvenliği Nasıl Sağlanır?
REST API'ler uygulamalar arasında veri aktarımı yaptığı için güvenlik, tasarımın temel parçalarından biri olmalıdır.
6.1. HTTPS Kullanın
İstemci ile sunucu arasındaki iletişim HTTPS üzerinden gerçekleştirilmelidir. HTTPS, aktarım sırasında verilerin şifrelenmesine yardımcı olur.
6.2. Kimlik Doğrulama ve Yetkilendirme Uygulayın
API'ye erişen kullanıcının veya uygulamanın kimliği doğrulanmalıdır. Ardından kullanıcının hangi kaynaklara ve işlemlere erişebileceği kontrol edilmelidir.
Bir kullanıcının sisteme giriş yapmış olması, tüm kullanıcıların veya siparişlerin verilerine erişebileceği anlamına gelmemelidir.
6.3. Girdi Doğrulaması Yapın
İstemciden gelen veriler sunucu tarafında kontrol edilmelidir. Beklenmeyen veri türleri, hatalı alanlar ve zararlı girdiler uygun şekilde işlenmelidir.
Girdi doğrulaması, tek başına tüm saldırıları engellemez. Gerektiğinde parametreli sorgular ve uygun çıktı işleme yöntemleri de kullanılmalıdır.
6.4. İstekleri Sınırlandırın
Rate limiting olarak bilinen istek sınırlama yöntemi, belirli bir süre içinde yapılabilecek istek sayısını kısıtlar. Bu yöntem kötüye kullanımı azaltmaya ve kaynakların korunmasına yardımcı olabilir.
6.5. Hassas Bilgileri Koruyun
API anahtarları, erişim belirteçleri ve parolalar kod içinde açık şekilde tutulmamalıdır. Hassas bilgiler güvenli biçimde saklanmalı, gereksiz yere günlük kayıtlarına yazılmamalı ve ihtiyaç duyulmayan erişim izinleri kaldırılmalıdır.
7. REST API Kullanmanın Avantajları Nelerdir?
REST API'ler, farklı uygulamaların ortak standartlar üzerinden iletişim kurmasına yardımcı olur. Başlıca avantajları şunlardır:
- Platform bağımsızlığı: Farklı programlama dilleriyle geliştirilen uygulamalar API üzerinden iletişim kurabilir.
- Kolay entegrasyon: Web siteleri, mobil uygulamalar ve harici servisler aynı kaynaklara erişebilir.
- Esnek geliştirme: İstemci ve sunucu, belirli arayüz kuralları korunduğu sürece ayrı ayrı geliştirilebilir.
- Ölçeklenebilirlik: Durumsuz istek yapısı, uygun altyapıyla birlikte sistemin ölçeklendirilmesini kolaylaştırabilir.
- Standart iletişim: HTTP metotları ve durum kodları, işlemlerin daha tutarlı biçimde tasarlanmasını sağlar.
Bununla birlikte, API'nin performansı ve güvenliği yalnızca REST kullanılmasıyla garanti edilmez. Sonuçlar tasarıma, uygulama koduna ve altyapıya bağlıdır.
8. REST API Nerelerde Kullanılır?
REST API'ler, farklı yazılım sistemlerinin veri alışverişi yapması gereken pek çok alanda kullanılır.
- Web uygulamaları: Kullanıcı, içerik ve ürün bilgilerinin sunucudan alınması.
- Mobil uygulamalar: Uygulama ile sunucu arasında veri aktarımı.
- E-ticaret sistemleri: Ürün, sepet ve sipariş işlemlerinin yürütülmesi.
- Bulut hizmetleri: Bulut kaynaklarının ve servislerinin API üzerinden yönetilmesi.
- Üçüncü taraf entegrasyonları: Ödeme sistemleri, harici servisler ve diğer uygulamalarla iletişim kurulması.
- Kurumsal yazılımlar: Farklı sistemlerin birbirine veri sağlaması ve iş süreçlerini paylaşması.
Sonuç
REST API, farklı yazılımların HTTP üzerinden standart bir yapıyla iletişim kurmasını sağlayan önemli bir yazılım geliştirme yaklaşımıdır. Kaynakların doğru tanımlanması, HTTP metotlarının uygun kullanılması, tutarlı yanıtların oluşturulması ve güvenlik önlemlerinin uygulanması başarılı bir REST API tasarımının temelini oluşturur.
Doğru tasarlanan REST API'ler, uygulamalar arasında entegrasyonu kolaylaştırır ve yazılım sistemlerinin sürdürülebilir şekilde geliştirilmesine yardımcı olur.
REST API Nedir? Nasıl Tasarlanır ve Kullanılır?