API Nedir? RESTful API Geliştirme Rehberi

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...

Programlar
API Nedir? RESTful API Geliştirme Rehberi

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.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

25 yıldır bilgi işlem piyasasında farklı dallarda uzmanlaşan bir Bilgisayar Mühendisi

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar