Bölüm 8 / 33
Backend, API ve Entegrasyonlar
Sunucu tarafı uygulamalarının yapısı, veri doğrulama, endpoint tasarımı ve harici servislerle iletişim kavramları.
6 canlı örnek — seçerek incele
İlgili kavramlar: REST, JSON, HTTP
API istek örneği
GET /api/products?q=ayakkabi&limit=24 Authorization: Bearer …
İş kuralları, veri erişimi, güvenlik ve API işlemlerini sunucuda yürüten uygulama katmanı.
Kullanıcının gördüğü ve etkileşim kurduğu istemci tarafı uygulama.
Frontend, backend ve veri katmanlarında çalışabilme alanı.
Uygulama kodunu çalıştırıp ağ isteklerine yanıt veren sunucu süreci.
HTTP bağlantısı kabul eden, statik dosya veya proxy hizmeti sunan yazılım.
Web sunucusu, reverse proxy, cache ve load balancer olarak kullanılan yazılım.
Modüler yapılı yaygın web sunucusu.
Yüksek performans ve Apache uyumluluğu sunan ticari/açık kaynak web sunucusu ailesi.
Bir HTTP method ve URL desenini işleyici koda bağlayan tanım.
Gelen isteği uygun route ve handler'a yönlendiren bileşen.
Bir API'nin belirli method ve URL ile erişilen işlem noktası.
HTTP isteğini alıp uygulama servislerini çağıran ve yanıt oluşturan katman.
İş kurallarını controller ve veri erişiminden ayıran uygulama katmanı.
Veritabanı erişimini ortak arayüz arkasında kapsülleyen desen.
Veri kaynağıyla sorgu ve kalıcılık işlemlerini yapan katman.
İş alanındaki varlık, değer ve kuralları temsil eden model.
Kimliği olan ve zaman içinde değişebilen iş nesnesi.
Kimliği yerine taşıdığı değerlerle tanımlanan değişmez iş nesnesi.
- DTOO
Katmanlar veya servisler arasında taşınacak veriyi tanımlayan nesne.
API isteğinden kabul edilen alanların ve doğrulama kurallarının modeli.
API istemcisine döndürülecek alanların kontrollü modeli.
Gelen verinin tür, format, uzunluk ve iş kurallarına uygunluğunu kontrol etme.
Gelen veriyi güvenli ve standart biçime temizleme veya dönüştürme.
JSON veya nesnenin önceden tanımlanmış şemaya uyup uymadığını kontrol etme.
Siparişin stok yokken onaylanmaması gibi iş alanına özgü kural.
Kullanıcının veya başka sistemin belirli hedefini gerçekleştiren uygulama işlemi.
İstek controller'a ulaşmadan veya yanıt dönmeden çalışan ara işlem katmanı.
İstekteki kullanıcı kimliğini doğrulayan middleware.
Uygulama hatalarını ortak formatta loglayıp HTTP yanıtına dönüştürür.
İstek süresi, method, URL ve sonuç kodunu kaydeder.
Belirli istemcinin istek sıklığını sınırlar.
- RESTT
Kaynakları URL'lerle, işlemleri HTTP method'larıyla modelleyen API yaklaşımı.
REST API içinde kullanıcı, ürün veya sipariş gibi adreslenebilir varlık.
Bir kaynağın API içindeki benzersiz URL'si.
Sunucunun her isteği gerekli bağlamı isteğin içinden alarak bağımsız işlemesi.
Aynı isteğin birden fazla kez yapılmasının ek yan etki üretmemesi özelliği.
Ödeme veya sipariş oluşturma isteğinin tekrarını güvenli biçimde tanıyan anahtar.
Endpoint'lerde fiil yerine çoğul kaynak adları ve HTTP method'ları kullanma yaklaşımı.
Bir kaynağın başka kaynak altındaki ilişkisini URL'de ifade etme.
API değişikliklerini v1, header veya başka stratejiyle sürümlere ayırma.
REST API endpoint, şema, güvenlik ve yanıtlarını makine okunabilir biçimde tanımlayan standart.
OpenAPI tanımından etkileşimli API dokümantasyonu oluşturan arayüz.
İstemcinin ihtiyaç duyduğu alanları tek sorguyla seçebildiği API sorgu dili ve çalışma zamanı.
GraphQL'de veri okuma işlemi.
GraphQL'de veri değiştiren işlem.
GraphQL alanının verisini üreten fonksiyon.
- gRPCİ
Protocol Buffers ve HTTP/2 kullanan yüksek performanslı servis iletişim sistemi.
Şemalı ve ikili veri serileştirme formatı.
- RPCO
Uzak sistemdeki bir fonksiyonu yerel fonksiyon gibi çağırma yaklaşımı.
- JSONT
API'lerde yaygın kullanılan metin tabanlı anahtar-değer veri formatı.
- XMLT
Etiket tabanlı, şemalanabilir veri işaretleme formatı.
- YAMLT
Yapılandırma dosyalarında kullanılan okunabilir girintili veri formatı.
- CSVT
Tablosal veriyi satır ve ayraçlarla taşıyan düz metin formatı.
Dosya ve form alanlarını aynı HTTP isteğinde gönderen içerik tipi.
İstemci ve sunucunun desteklenen veri formatında anlaşması.
Toplam kayıt, sayfa, limit ve sonraki bağlantı gibi liste bilgileri.
API sonucunu alan değerleri veya koşullara göre daraltma.
API sonucunu seçilen alan ve yöne göre sıralama.
İstemcinin yanıtta yalnızca gereken alanları istemesi.
API response boyutunu azaltmak için alan listesini sınırlama.
İlişkili kayıtların aynı yanıtta isteğe bağlı getirilmesi.
Bir ana sorgudan sonra her kayıt için ek sorgu çalıştırılması performans problemi.
Çok sayıda küçük işlemi tek toplu işlemde birleştirme.
Birden fazla servisin önünde kimlik, yönlendirme, limit ve gözlem sağlayan geçit.
Farklı istemci türleri için özel backend katmanı oluşturma yaklaşımı.
Başka kurum veya sağlayıcının sunduğu harici programlama arayüzü.
Bir uygulama veya entegrasyonu tanımlayan gizli erişim anahtarı.
İstemci kimliğini doğrulamak için yalnızca güvenli tarafta tutulması gereken gizli değer.
Kullanıcı şifresini paylaşmadan başka uygulamaya sınırlı erişim yetkisi veren protokol.
Bir API'ye belirli süre ve yetkilerle erişim sağlayan token.
Süresi biten access token'ı yeniden almak için kullanılan uzun ömürlü token.
Bir token'ın izin verilen işlem alanlarını sınırlar.
Harici sistem olaylarının gönderildiği public HTTP endpoint.
Webhook isteğinin gerçekten sağlayıcıdan geldiğini doğrulayan kriptografik imza.
Geçici hata alan işlemi belirli kurallarla tekrar deneme.
Her başarısız denemede bekleme süresini kademeli artırma stratejisi.
Aynı anda tekrar deneyen sistemlerin çakışmasını azaltmak için beklemeye rastgelelik ekleme.
Bir işlem belirtilen sürede tamamlanmazsa durdurma sınırı.
Arızalı harici servise istekleri geçici keserek zincirleme hatayı önleyen desen.
Bir servis başarısız olduğunda alternatif veri veya davranış kullanma.
Servisin çalışır ve bağımlılıklarına erişebilir durumda olup olmadığını kontrol eden endpoint.
Sürecin hayatta olup olmadığını kontrol eder.
Servisin trafik kabul etmeye hazır olup olmadığını kontrol eder.
Yeni istek almayı durdurup mevcut işleri tamamladıktan sonra süreci kapatma.
HTTP yanıtından bağımsız çalışan e-posta, rapor veya işleme görevi.
Belirlenen zaman veya periyotta otomatik çalışan görev.
Cron ifadesine göre zamanlanan komut veya uygulama görevi.
Queue veya görev kaynağından işleri alıp arka planda işleyen süreç.
Büyük veri grubunu zamanlanmış veya toplu biçimde işleyen görev.
Veritabanı şemasını sürümlü ve tekrarlanabilir biçimde değiştiren dosya veya işlem.
- SeedT
Geliştirme veya ilk kurulum için başlangıç verisi ekleme işlemi.
Development, staging veya production gibi uygulama çalışma bağlamı.
Geliştiricinin kod yazıp hızlı test yaptığı ortam.
Production'a benzer koşullarda son kontrollerin yapıldığı ön yayın ortamı.
Gerçek kullanıcıların kullandığı canlı ortam.
Bir özelliği deploy etmeden kullanıcı veya ortam bazında açıp kapatma mekanizması.
Ortam ayarlarını güvenli, izlenebilir ve tutarlı biçimde yönetme süreci.
Parola, token ve sertifika gibi gizli bilgileri güvenli saklama ve dağıtma süreci.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Backend | T | İş kuralları, veri erişimi, güvenlik ve API işlemlerini sunucuda yürüten uygulama katmanı. |
| Frontend | T | Kullanıcının gördüğü ve etkileşim kurduğu istemci tarafı uygulama. |
| Full Stack | T | Frontend, backend ve veri katmanlarında çalışabilme alanı. |
| Application Server | T | Uygulama kodunu çalıştırıp ağ isteklerine yanıt veren sunucu süreci. |
| Web Server | T | HTTP bağlantısı kabul eden, statik dosya veya proxy hizmeti sunan yazılım. |
| Nginx | O | Web sunucusu, reverse proxy, cache ve load balancer olarak kullanılan yazılım. |
| Apache | O | Modüler yapılı yaygın web sunucusu. |
| LiteSpeed | O | Yüksek performans ve Apache uyumluluğu sunan ticari/açık kaynak web sunucusu ailesi. |
| Route | T | Bir HTTP method ve URL desenini işleyici koda bağlayan tanım. |
| Router | T | Gelen isteği uygun route ve handler'a yönlendiren bileşen. |
| Endpoint | T | Bir API'nin belirli method ve URL ile erişilen işlem noktası. |
| Controller | T | HTTP isteğini alıp uygulama servislerini çağıran ve yanıt oluşturan katman. |
| Service Layer | O | İş kurallarını controller ve veri erişiminden ayıran uygulama katmanı. |
| Repository Pattern | O | Veritabanı erişimini ortak arayüz arkasında kapsülleyen desen. |
| Data Access Layer | O | Veri kaynağıyla sorgu ve kalıcılık işlemlerini yapan katman. |
| Domain Model | O | İş alanındaki varlık, değer ve kuralları temsil eden model. |
| Entity | T | Kimliği olan ve zaman içinde değişebilen iş nesnesi. |
| Value Object | O | Kimliği yerine taşıdığı değerlerle tanımlanan değişmez iş nesnesi. |
| DTO | O | Katmanlar veya servisler arasında taşınacak veriyi tanımlayan nesne. |
| Request DTO | O | API isteğinden kabul edilen alanların ve doğrulama kurallarının modeli. |
| Response DTO | O | API istemcisine döndürülecek alanların kontrollü modeli. |
| Validation | T | Gelen verinin tür, format, uzunluk ve iş kurallarına uygunluğunu kontrol etme. |
| Sanitization | T | Gelen veriyi güvenli ve standart biçime temizleme veya dönüştürme. |
| Schema Validation | O | JSON veya nesnenin önceden tanımlanmış şemaya uyup uymadığını kontrol etme. |
| Business Rule | T | Siparişin stok yokken onaylanmaması gibi iş alanına özgü kural. |
| Use Case | O | Kullanıcının veya başka sistemin belirli hedefini gerçekleştiren uygulama işlemi. |
| Middleware | T | İstek controller'a ulaşmadan veya yanıt dönmeden çalışan ara işlem katmanı. |
| Authentication Middleware | T | İstekteki kullanıcı kimliğini doğrulayan middleware. |
| Authorization Middleware | O | Kullanıcının endpoint veya kaynağa erişim iznini kontrol eder. |
| Error Middleware | O | Uygulama hatalarını ortak formatta loglayıp HTTP yanıtına dönüştürür. |
| Logging Middleware | O | İstek süresi, method, URL ve sonuç kodunu kaydeder. |
| Rate Limit Middleware | O | Belirli istemcinin istek sıklığını sınırlar. |
| REST | T | Kaynakları URL'lerle, işlemleri HTTP method'larıyla modelleyen API yaklaşımı. |
| Resource | T | REST API içinde kullanıcı, ürün veya sipariş gibi adreslenebilir varlık. |
| Resource URI | T | Bir kaynağın API içindeki benzersiz URL'si. |
| Stateless | O | Sunucunun her isteği gerekli bağlamı isteğin içinden alarak bağımsız işlemesi. |
| Idempotency | O | Aynı isteğin birden fazla kez yapılmasının ek yan etki üretmemesi özelliği. |
| Idempotency Key | O | Ödeme veya sipariş oluşturma isteğinin tekrarını güvenli biçimde tanıyan anahtar. |
| RESTful Naming | T | Endpoint'lerde fiil yerine çoğul kaynak adları ve HTTP method'ları kullanma yaklaşımı. |
| Nested Resource | O | Bir kaynağın başka kaynak altındaki ilişkisini URL'de ifade etme. |
| API Versioning | O | API değişikliklerini v1, header veya başka stratejiyle sürümlere ayırma. |
| OpenAPI | O | REST API endpoint, şema, güvenlik ve yanıtlarını makine okunabilir biçimde tanımlayan standart. |
| Swagger UI | O | OpenAPI tanımından etkileşimli API dokümantasyonu oluşturan arayüz. |
| GraphQL | O | İstemcinin ihtiyaç duyduğu alanları tek sorguyla seçebildiği API sorgu dili ve çalışma zamanı. |
| Query | T | GraphQL'de veri okuma işlemi. |
| Mutation | T | GraphQL'de veri değiştiren işlem. |
| Resolver | O | GraphQL alanının verisini üreten fonksiyon. |
| gRPC | İ | Protocol Buffers ve HTTP/2 kullanan yüksek performanslı servis iletişim sistemi. |
| Protocol Buffers | İ | Şemalı ve ikili veri serileştirme formatı. |
| RPC | O | Uzak sistemdeki bir fonksiyonu yerel fonksiyon gibi çağırma yaklaşımı. |
| JSON | T | API'lerde yaygın kullanılan metin tabanlı anahtar-değer veri formatı. |
| XML | T | Etiket tabanlı, şemalanabilir veri işaretleme formatı. |
| YAML | T | Yapılandırma dosyalarında kullanılan okunabilir girintili veri formatı. |
| CSV | T | Tablosal veriyi satır ve ayraçlarla taşıyan düz metin formatı. |
| Multipart Form Data | O | Dosya ve form alanlarını aynı HTTP isteğinde gönderen içerik tipi. |
| Content Negotiation | O | İstemci ve sunucunun desteklenen veri formatında anlaşması. |
| Pagination Metadata | T | Toplam kayıt, sayfa, limit ve sonraki bağlantı gibi liste bilgileri. |
| Filtering | T | API sonucunu alan değerleri veya koşullara göre daraltma. |
| Sorting | T | API sonucunu seçilen alan ve yöne göre sıralama. |
| Field Selection | O | İstemcinin yanıtta yalnızca gereken alanları istemesi. |
| Sparse Fieldset | O | API response boyutunu azaltmak için alan listesini sınırlama. |
| Expand / Include | O | İlişkili kayıtların aynı yanıtta isteğe bağlı getirilmesi. |
| N+1 Query | O | Bir ana sorgudan sonra her kayıt için ek sorgu çalıştırılması performans problemi. |
| Batching | O | Çok sayıda küçük işlemi tek toplu işlemde birleştirme. |
| API Gateway | O | Birden fazla servisin önünde kimlik, yönlendirme, limit ve gözlem sağlayan geçit. |
| Backend for Frontend | İ | Farklı istemci türleri için özel backend katmanı oluşturma yaklaşımı. |
| Third-party API | T | Başka kurum veya sağlayıcının sunduğu harici programlama arayüzü. |
| API Key | T | Bir uygulama veya entegrasyonu tanımlayan gizli erişim anahtarı. |
| API Secret | T | İstemci kimliğini doğrulamak için yalnızca güvenli tarafta tutulması gereken gizli değer. |
| OAuth 2.0 | O | Kullanıcı şifresini paylaşmadan başka uygulamaya sınırlı erişim yetkisi veren protokol. |
| Access Token | T | Bir API'ye belirli süre ve yetkilerle erişim sağlayan token. |
| Refresh Token | O | Süresi biten access token'ı yeniden almak için kullanılan uzun ömürlü token. |
| Scope | O | Bir token'ın izin verilen işlem alanlarını sınırlar. |
| Webhook Endpoint | O | Harici sistem olaylarının gönderildiği public HTTP endpoint. |
| Webhook Signature | O | Webhook isteğinin gerçekten sağlayıcıdan geldiğini doğrulayan kriptografik imza. |
| Retry | O | Geçici hata alan işlemi belirli kurallarla tekrar deneme. |
| Exponential Backoff | O | Her başarısız denemede bekleme süresini kademeli artırma stratejisi. |
| Jitter | İ | Aynı anda tekrar deneyen sistemlerin çakışmasını azaltmak için beklemeye rastgelelik ekleme. |
| Timeout | T | Bir işlem belirtilen sürede tamamlanmazsa durdurma sınırı. |
| Circuit Breaker | İ | Arızalı harici servise istekleri geçici keserek zincirleme hatayı önleyen desen. |
| Fallback | O | Bir servis başarısız olduğunda alternatif veri veya davranış kullanma. |
| Health Check | O | Servisin çalışır ve bağımlılıklarına erişebilir durumda olup olmadığını kontrol eden endpoint. |
| Liveness Check | O | Sürecin hayatta olup olmadığını kontrol eder. |
| Readiness Check | O | Servisin trafik kabul etmeye hazır olup olmadığını kontrol eder. |
| Graceful Shutdown | O | Yeni istek almayı durdurup mevcut işleri tamamladıktan sonra süreci kapatma. |
| Background Job | O | HTTP yanıtından bağımsız çalışan e-posta, rapor veya işleme görevi. |
| Scheduled Job | O | Belirlenen zaman veya periyotta otomatik çalışan görev. |
| Cron Job | O | Cron ifadesine göre zamanlanan komut veya uygulama görevi. |
| Worker | O | Queue veya görev kaynağından işleri alıp arka planda işleyen süreç. |
| Batch Job | O | Büyük veri grubunu zamanlanmış veya toplu biçimde işleyen görev. |
| Migration | T | Veritabanı şemasını sürümlü ve tekrarlanabilir biçimde değiştiren dosya veya işlem. |
| Seed | T | Geliştirme veya ilk kurulum için başlangıç verisi ekleme işlemi. |
| Environment | T | Development, staging veya production gibi uygulama çalışma bağlamı. |
| Development | T | Geliştiricinin kod yazıp hızlı test yaptığı ortam. |
| Staging | T | Production'a benzer koşullarda son kontrollerin yapıldığı ön yayın ortamı. |
| Production | T | Gerçek kullanıcıların kullandığı canlı ortam. |
| Feature Flag | O | Bir özelliği deploy etmeden kullanıcı veya ortam bazında açıp kapatma mekanizması. |
| Configuration Management | O | Ortam ayarlarını güvenli, izlenebilir ve tutarlı biçimde yönetme süreci. |
| Secret Management | O | Parola, token ve sertifika gibi gizli bilgileri güvenli saklama ve dağıtma süreci. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Ürün CRUD API'si için endpoint, request DTO, response DTO ve hata yanıtlarını tasarlayın.
- Webhook alan bir endpoint için signature doğrulama, idempotency ve retry senaryosunu açıklayın.
- Development, staging ve production ortamlarının farklarını örnek yapılandırma tablosuyla yazın.