API, farklı yazılımlar arasındaki iletişimi sağlayan arabirimdir. Modern uygulamaların temel yapı taşı. RESTful API ise en yaygın kullanılan API türü. Bu rehberde API kavramını ve RESTful API geliştirme prensiplerini öğreneceksiniz.
API Nedir?
API (Application Programming Interface), uygulamaların birbirleriyle veri alışverişi yapmasını sağlayan kurallar bütünüdür.
Günlük hayattan örnek:
- Hava durumu uygulaması → Meteoroloji API'si → Hava verileri
- Ödeme sayfası → Banka API'si → Ödeme işlemi
- Harita uygulaması → Google Maps API → Konum verileri
API olmadan her uygulamanın tüm işlevleri sıfırdan yazması gerekirdi.
API Türleri
REST API
En yaygın tür. HTTP protokolü ve JSON formatı kullanır. Basit, esnek ve ölçeklenebilir.
SOAP API
XML tabanlı, daha katı standartlar. Kurumsal uygulamalarda kullanılır. Daha güvenli ama karmaşık.
GraphQL
Facebook'un geliştirdiği sorgu dili. İstemci tam olarak ne istediğini belirler. Tek endpoint.
WebSocket
İki yönlü gerçek zamanlı iletişim. Sohbet uygulamaları, canlı güncellemeler için.
REST Nedir?
REST (Representational State Transfer), Roy Fielding tarafından 2000'de tanımlanan mimari stil.
REST Prensipleri
Client-Server Ayrımı
İstemci ve sunucu birbirinden bağımsız. İstemci depolama bilmez, sunucu kullanıcı durumu bilmez.
Stateless (Durumsuz)
Her istek bağımsız. Sunucu önceki istekleri hatırlamaz. Tüm bilgi istek içinde olmalı.
Cacheable (Önbelleğe Alınabilir)
Yanıtlar önbelleğe alınabilir olarak işaretlenebilir. Performans artışı sağlar.
Uniform Interface (Tekdüze Arayüz)
Standart HTTP metodları ve formatları. Tutarlı yapı.
Layered System (Katmanlı Sistem)
Proxy, yük dengeleyici, güvenlik katmanları eklenebilir.
HTTP Metodları
REST API'de HTTP metodları CRUD işlemlerini temsil eder:
GET
Veri okuma. Yan etki yok (safe).
GET /api/kullanicilar GET /api/kullanicilar/123
POST
Yeni kaynak oluşturma.
POST /api/kullanicilar Body: {"ad": "Ali", "email": "[email protected]"}
PUT
Kaynağı tamamen güncelleme.
PUT /api/kullanicilar/123 Body: {"ad": "Ali", "email": "[email protected]"}
PATCH
Kısmi güncelleme.
PATCH /api/kullanicilar/123 Body: {"email": "[email protected]"}
DELETE
Kaynak silme.
DELETE /api/kullanicilar/123
HTTP Durum Kodları
API yanıtlarında durum kodları kullanılır:
2xx Başarılı
200 OK: Başarılı istek 201 Created: Kaynak oluşturuldu 204 No Content: Başarılı ama içerik yok
4xx İstemci Hatası
400 Bad Request: Geçersiz istek 401 Unauthorized: Kimlik doğrulama gerekli 403 Forbidden: Yetkisiz erişim 404 Not Found: Kaynak bulunamadı 422 Unprocessable Entity: Doğrulama hatası
5xx Sunucu Hatası
500 Internal Server Error: Sunucu hatası 503 Service Unavailable: Servis kullanılamıyor
JSON Formatı
REST API'lerde veri formatı genellikle JSON.
JSON Nedir?
JavaScript Object Notation. Okunabilir, hafif veri formatı.
{ "id": 123, "ad": "Ali Yılmaz", "email": "[email protected]", "aktif": true, "roller": ["admin", "editor"], "adres": { "sehir": "İstanbul", "ilce": "Kadıköy" } }
Veri Tipleri
String: "metin" Number: 123, 45.67 Boolean: true, false Array: [1, 2, 3] Object: {"key": "value"} Null: null
RESTful API Tasarım İlkeleri
URI Tasarımı
İsimlendirme
İsim kullanın, fiil değil: /api/kullanicilar (doğru) /api/kullanicilariGetir (yanlış)
Çoğul isimler: /api/kullanicilar (doğru) /api/kullanici (yanlış)
Küçük harf ve tire: /api/blog-yazilar (doğru) /api/BlogYazilari (yanlış)
Hiyerarşi
/api/kullanicilar /api/kullanicilar/123 /api/kullanicilar/123/siparisler /api/kullanicilar/123/siparisler/456
Filtreleme ve Sayfalama
GET /api/urunler?kategori=elektronik GET /api/urunler?fiyat_min=100&fiyat_max=500 GET /api/urunler?sayfa=2&limit=20 GET /api/urunler?siralama=fiyat&yon=asc
Versiyon Yönetimi
URL'de: /api/v1/kullanicilar Header'da: Accept: application/vnd.api+json;version=1
Kimlik Doğrulama
API Key
Basit ama güvensiz. Header'da veya query parameter'da gönderilir.
X-API-Key: abc123xyz
OAuth 2.0
Endüstri standardı. Access token ve refresh token kullanır.
JWT (JSON Web Token)
Yaygın kullanılır. Stateless doğrulama. Token içinde kullanıcı bilgileri.
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Hata Yönetimi
Tutarlı hata formatı kullanın:
{ "error": { "code": "VALIDATION_ERROR", "message": "E-posta geçersiz format", "field": "email" } }
API Dokümantasyonu
İyi API dokümantasyonu şart.
Araçlar
Swagger/OpenAPI: Endüstri standardı Postman: Test ve dokümantasyon Redoc: Güzel görünümlü dokümantasyon
İçermeli
Endpoint listesi HTTP metodları ve parametreler İstek ve yanıt örnekleri Hata kodları Kimlik doğrulama bilgileri
Rate Limiting
API'yi aşırı kullanımdan koruma.
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 95 X-RateLimit-Reset: 1609459200
Limit aşıldığında 429 Too Many Requests döndürün.
API Güvenliği
HTTPS Zorunlu
Tüm API trafiği şifreli olmalı.
Girdi Doğrulama
Tüm girişleri doğrulayın. SQL injection ve XSS'e karşı koruyun.
CORS Ayarları
Hangi domain'lerin API'ye erişebileceğini belirleyin.
Yetkilendirme
Sadece kimlik doğrulama yetmez. Kullanıcının o kaynağa erişim yetkisi var mı kontrol edin.
API Test Araçları
Postman: Kapsamlı API test aracı Insomnia: Hafif alternatif cURL: Komut satırı HTTPie: Kullanıcı dostu CLI Thunder Client: VS Code eklentisi
API Geliştirme Kontrol Listesi
- RESTful prensiplere uyuyor
- Tutarlı URI yapısı
- Doğru HTTP metodları
- Uygun durum kodları
- JSON formatı
- Kimlik doğrulama var
- HTTPS zorunlu
- Rate limiting uygulandı
- Dokümantasyon hazır
- Hata formatı tutarlı
Sonuç
API'ler modern yazılım geliştirmenin temelidir. RESTful API en yaygın ve öğrenmesi kolay olanı.
HTTP metodlarını ve durum kodlarını doğru kullanın. Tutarlı URI yapısı oluşturun.
Güvenliği ihmal etmeyin, dokümantasyonu ihmal etmeyin. İyi tasarlanmış API, geliştirici deneyimini iyileştirir.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.