Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir konuşmacının Spring Boot üzerinde REST API versiyonlama yöntemlerini anlattığı bir eğitim içeriğidir.
- Video, API versiyonlamasının önemi ve üç temel versiyonlama yöntemini (URL'de versiyon pedi kullanma, header'da versiyon parametresi ekleme ve sub domain'ler üzerinden versiyonlama) detaylı olarak ele almaktadır. Konuşmacı, Spring Boot versiyoning modülü oluşturma, controller ve entity sınıfları tanımlama gibi pratik örnekler üzerinden adım adım anlatım yapmakta ve Postman üzerinden test etmektedir.
- Ayrıca, API versiyonlama için API Gateway ürünlerinin (Kong, AWS API Gateway, IBM API Gateway) kullanımı ve avantajları da videoda ele alınmaktadır. Video sonunda, örnek projenin kaynak kodunun Git repository'sinden indirilebileceği belirtilmektedir.
- 00:06API Versiyonlama Giriş
- Bu bölümde Spring Boot üzerinde API versiyonlama örneği yapılacak.
- API versiyonlama, özellikle orta katman ürünleri (EFS) ile yönetilirken ciddi bir problem olarak karşımıza çıkar.
- Amazon, Google, Kong Gateway gibi orta katman ürünleri veya kendi custom oluşturabiliriz.
- 01:42Versiyonlama Alternatifleri
- Küçük ölçekli projeler için versiyonlama, API üzerinde geliştirmek mantıklı bir alternatiftir.
- Versiyonlama için üç temel yöntem vardır: URL'de versiyon ekleyerek, HTTP header'ında versiyon ekleyerek veya HTTP header'ında "Accept-Version" parametresi kullanarak.
- Çok fazla müşteri ve sürekli geliştirme yapan durumlarda versiyonlama yapmaya ihtiyaç duyulur.
- 03:10Versiyonlama Yöntemleri
- URL ile versiyonlama, network seviyesinde yapılan bir konfigürasyon olup, farklı sub domain'lere gelen istekleri farklı versiyonlara yönlendirebilir.
- HTTP header'ında versiyonlama, "Accept-Version" parametresi kullanılarak yapılabilir.
- Alternatif olarak, versiyonlama için bir parametre de kullanılabilir.
- 04:33Proje Yapısı
- Proje içerisinde "spring-boot-versioning" adında bir modül oluşturulacak.
- Modül, Spring Boot Parent'dan oluşturulacak ve sadece Web dependency'si alınacak.
- Proje için Java versiyonu 1.8 olarak ayarlanacak.
- 06:11Controller ve Controller Metotları
- Versiyoning modülüne basit bir controller ve runner eklenecek.
- "Application" adında bir main metodu oluşturulacak ve Spring Application Run ile çalıştırılacak.
- "ProductApi" adında bir controller oluşturulacak ve "@RestController" annotation ile işaretlenecek.
- 08:46Entity Oluşturma
- "Product" adında bir entity oluşturulacak ve "video" paketine eklenecek.
- Entity'de "productName" adında bir property olacak.
- "ProductV1" ve "ProductV2" adında iki farklı versiyon oluşturulacak, "ProductV2" versiyonuna "price" adında bir field eklenecek.
- 11:42Versiyonlama Gerekliliği
- Farklı client'lar (Android, iOS) farklı versiyonlarla çalışabilir, bu durumda versiyonlama gereklidir.
- Web uygulaması, masaüstü uygulaması veya birden fazla müşteri farklı API versiyonları kullanabilir.
- Yeni bir field eklendiğinde veya entity'de klanı etkileyecek bir değişiklik yapıldığında versiyonlama gereklidir.
- 13:10API Metotları ve URL'ler
- İki versiyon için ortak bir tip olan "Product" kullanılarak response entity oluşturulacak.
- "api/v1/product" URL'si "ProductV1" versiyonunu, "api/v2/product" URL'si "ProductV2" versiyonunu çağıracak.
- "localhost:8800/api/v1/product" URL'si "hp laptop" nesnesini, "localhost:8800/api/v2/product" URL'si "hp laptop" ve "price" değerlerini döndürecek.
- 16:37API Versiyonlama Yöntemleri
- İlk versiyonlama yöntemi, path versiyonlamasıdır; örneğin "product/v1" ve "product/v2" adresleri farklı versiyonları temsil eder.
- İkinci yöntem, parametre ile versiyonlamadır; örneğin "api-version=1" parametresi ile bir versiyon, "api-version=2" parametresi ile diğer versiyon çağrılabilir.
- Üçüncü yöntem, header ile versiyonlamadır; "X-API-Version" header'ı kullanılarak versiyon belirlenebilir.
- 22:15Header Kullanımı ve Avantajları
- Header'lar genellikle özel kullanımlar için tahsis edilmiş parametrelerdir ve HTTP header'ları önceden tanımlanmış bağlantı, kodlama ve cashing gibi özellikler içerir.
- Custom header'lar oluştururken "X-" öneki kullanmak best practice'dir, böylece header'ın özel olduğunu belirtmek mümkündür.
- Header'lar, API'nin farklı cihazlarla iletişim kurması durumunda (örneğin güvenlik cihazları) daha anlaşılır hale gelir.
- 24:25API Test Etme ve DTO Kullanımı
- Postman gibi araçlar kullanılarak API'lar test edilebilir ve farklı versiyonlar çağrılabilir.
- DTO (Data Transfer Object) nesneleri, veritabanındaki mapping nesnelerinden farklı olarak API'lar için özel olarak oluşturulur.
- DTO'lar, API'ların dışarıya açtığı nesneleri temsil eder ve veritabanı nesnelerinden farklı olarak yönetilebilir.
- 30:16API Gateway Kullanımı
- API Gateway'ler (örneğin Kong, AWS API Gateway, IBM API Gateway) API'ları yönetmek için kullanılır.
- API Gateway'ler, API'ları versiyonlamak için geliştirme gerektirmeden yönetmeyi sağlar.
- Büyük firmalar ücretsiz API Gateway'leri kullanabilirken, küçük veya orta ölçekli projelerde API Gateway'i konumlandırmak maliyetli olabilir.