Frontend-Backend Entegrasyonu
Bu bölümde, Angular frontend ve Spring Boot backend arasındaki entegrasyonu detaylı olarak ele alacağız. İki farklı teknoloji yığınının nasıl birlikte çalıştığını, veri alışverişinin nasıl gerçekleştiğini ve entegrasyon sürecinde karşılaşılabilecek zorlukları ve çözümlerini inceleyeceğiz.Mimari Genel Bakış
E-ticaret uygulamamız, aşağıdaki mimari yapıya sahiptir:- Frontend: Angular ile geliştirilmiş, kullanıcı arayüzünü sağlayan istemci uygulaması.
- Backend: Spring Boot ile geliştirilmiş, iş mantığını ve veri erişimini sağlayan sunucu uygulaması.
- Veritabanı: MySQL veritabanı, verilerin kalıcı olarak saklandığı yer.
- Ayrı Geliştirme: Frontend ve backend ekipleri, birbirlerinden bağımsız olarak çalışabilir.
- Ölçeklenebilirlik: Frontend ve backend bileşenleri ayrı ayrı ölçeklendirilebilir.
- Teknoloji Bağımsızlığı: Her katman, kendi teknoloji yığınını kullanabilir.
- Yeniden Kullanılabilirlik: Backend API’si, farklı istemciler (web, mobil, masaüstü) tarafından kullanılabilir.
İletişim Akışı
Frontend ve backend arasındaki iletişim, HTTP protokolü üzerinden gerçekleşir. İşte tipik bir istek-yanıt döngüsü:- Kullanıcı, Angular uygulamasında bir eylem gerçekleştirir (örneğin, bir ürünü sepete ekler).
- Angular, HTTP isteği oluşturur ve Spring Boot API’sine gönderir.
- Spring Boot, isteği alır, işler ve veritabanı işlemlerini gerçekleştirir.
- Spring Boot, işlem sonucunu JSON formatında döndürür.
- Angular, yanıtı alır, işler ve kullanıcı arayüzünü günceller.
API Endpoint’leri ve Servisler
Frontend ve backend arasındaki iletişim, API endpoint’leri aracılığıyla gerçekleşir. Spring Boot, RESTful API endpoint’leri sağlar ve Angular, bu endpoint’lere HTTP istekleri gönderir.Backend API Endpoint’leri
Spring Boot uygulamasında, RESTful API endpoint’leri@RestController anotasyonu ile işaretlenmiş sınıflarda tanımlanır:
Frontend Servisler
Angular uygulamasında, HTTP isteklerini göndermek için servisler kullanılır:API URL Yapılandırması
Frontend uygulamasında, backend API’sine erişmek için API URL’sini yapılandırmanız gerekir. Bu, geliştirme ve üretim ortamları için farklı olabilir.Environment Dosyaları
Angular, farklı ortamlar için farklı yapılandırmalar sağlamak amacıyla environment dosyaları kullanır:CORS Yapılandırması
Cross-Origin Resource Sharing (CORS), farklı kaynaklardan gelen HTTP isteklerine izin vermek için bir mekanizmadır. Angular uygulaması ve Spring Boot API’si farklı kaynaklarda çalıştığında, CORS yapılandırması gereklidir.Spring Boot CORS Yapılandırması
Spring Boot uygulamasında, CORS’u yapılandırmak için birkaç yöntem vardır:1. WebMvcConfigurer Kullanarak
2. @CrossOrigin Anotasyonu Kullanarak
3. CorsFilter Kullanarak
Üretim Ortamı için CORS Yapılandırması
Üretim ortamında, güvenlik nedeniyle CORS yapılandırmasını daha kısıtlayıcı hale getirmelisiniz:Kimlik Doğrulama ve Yetkilendirme
Frontend ve backend arasındaki güvenli iletişim için, kimlik doğrulama ve yetkilendirme mekanizmaları gereklidir.JWT Kimlik Doğrulama
JSON Web Token (JWT), güvenli bir şekilde bilgi aktarmak için kullanılan bir standarttır. JWT, kimlik doğrulama ve yetkilendirme için yaygın olarak kullanılır.Backend JWT Yapılandırması
Frontend JWT Interceptor
Veri Modelleri ve DTO’lar
Frontend ve backend arasında veri alışverişi için, veri modellerini ve DTO’ları (Data Transfer Object) tanımlamanız gerekir.Backend DTO’ları
Frontend Modelleri
Hata İşleme
Frontend ve backend arasındaki iletişimde, hataları düzgün bir şekilde işlemek önemlidir.Backend Hata İşleme
Frontend Hata İşleme
Proxy Yapılandırması
Geliştirme sırasında, Angular uygulamasından Spring Boot API’sine yapılan istekleri yönlendirmek için bir proxy yapılandırması kullanabilirsiniz. Bu, CORS sorunlarını önlemeye yardımcı olur.proxy.conf.json
angular.json
/api ile başlayan tüm istekler, http://localhost:8080 adresine yönlendirilir.
Entegrasyon Testi
Frontend ve backend entegrasyonunu test etmek için, entegrasyon testleri yazabilirsiniz.Backend Entegrasyon Testi
Frontend Entegrasyon Testi
Yaygın Entegrasyon Sorunları ve Çözümleri
Frontend ve backend entegrasyonu sırasında karşılaşılabilecek bazı yaygın sorunlar ve çözümleri:1. CORS Hataları
Sorun: Frontend ve backend farklı kaynaklarda çalıştığında, tarayıcı güvenlik nedeniyle istekleri engeller. Çözüm: Backend’de CORS yapılandırması yapın veya geliştirme sırasında proxy kullanın.2. Kimlik Doğrulama Sorunları
Sorun: JWT token’ları düzgün bir şekilde gönderilmiyor veya doğrulanmıyor. Çözüm: JWT interceptor’ını kontrol edin ve token’ın doğru bir şekilde gönderildiğinden emin olun.3. Veri Tipleri Uyumsuzluğu
Sorun: Backend ve frontend arasında veri tipleri uyumsuzluğu (örneğin, tarih formatları). Çözüm: DTO’ları ve modelleri uyumlu hale getirin veya dönüşüm işlevleri kullanın.4. API Endpoint Yolları
Sorun: Frontend ve backend arasında API endpoint yolları uyumsuzluğu. Çözüm: API URL’lerini yapılandırma dosyalarında tanımlayın ve tutarlı bir şekilde kullanın.5. Hata İşleme
Sorun: Backend hataları frontend’de düzgün bir şekilde işlenmiyor. Çözüm: Hata interceptor’ı kullanarak backend hatalarını yakalayın ve kullanıcıya uygun mesajlar gösterin.Entegrasyon İçin En İyi Uygulamalar
Frontend ve backend entegrasyonu için bazı en iyi uygulamalar:- API Dokümantasyonu: Backend API’sini Swagger veya OpenAPI ile belgelendirin.
- Versiyon Kontrolü: API’nizi sürümlendirin ve değişiklikleri belgelendirin.
- Tutarlı Veri Modelleri: Frontend ve backend arasında tutarlı veri modelleri kullanın.
- Hata Kodları: Anlamlı hata kodları ve mesajları kullanın.
- Güvenlik: HTTPS, JWT ve CORS gibi güvenlik önlemlerini uygulayın.
- Performans: API yanıtlarını optimize edin ve gereksiz veri transferini önleyin.
- Test: Entegrasyon testleri yazın ve düzenli olarak çalıştırın.