Burak / Kutbay
Menü

API Versiyonlama – Spring Framework 7

340 kelime · 2 dk okuma

Bu yazıda

Bu yazıda, Spring Framework 7.0 ve Spring Boot 4 ile birlikte gelen yeni API versiyonlama özelliğini detaylı bir şekilde inceleyeceğiz. Canlı ortamda çalışan projelerimiz, sürekli gelişim ve değişim ihtiyacı duyar. API'lerimizden gelen istekler ve…

Bu sayfada
  1. API Versiyonlama
  2. Geleneksel Versiyonlama Yöntemi
  3. Spring Framework 7.0’ın Getirdiği Yenilik
  4. Örnek Uygulama
  5. application.propertis Konfigürasyonu
  6. RestController
  7. Client Tarafında İstek Gönderme
  8. Hata Yönetimi
  9. İlgili Spring Boot içerikleri
  10. İlgili Spring ve DevOps içerikleri
  11. İlgili Spring kaynakları
API Versiyonlama – Spring Framework 7 görseli
FIG_001 · Spring Framework Spring Boot API Versioning

Bu yazıda, Spring Framework 7.0 ve Spring Boot 4 ile birlikte gelen yeni API versiyonlama özelliğini detaylı bir şekilde inceleyeceğiz.

API Versiyonlama

Canlı ortamda çalışan projelerimiz, sürekli gelişim ve değişim ihtiyacı duyar. API’lerimizden gelen istekler ve verilen cevaplar zamanla değişime uğrar. Bu değişiklikleri yaparken backwards compatibility (geriye dönük uyumluluk) sağlamak kritik önem taşır.

Geleneksel Versiyonlama Yöntemi

Spring Framework’ün önceki versiyonlarında, API versiyonlamasını genellikle URL path’inde tanımlanır

CSS
@GetMapping(path = "/students/list"/v1/…")Code language: CSS (css)


Bu Spring Framework 7 ve Sprint Boot 4’te versiyonlama yontemi degisiyor.

Spring Framework 7.0’ın Getirdiği Yenilik

Spring Framework 7.0 ile birlikte, topluluk tarafından en çok istenen özelliklerden biri geldi. Artık API tanımlamalarımıza version attribute’ü eklenerek, versiyonlamayı daha standart ve yönetilebilir bir şekilde yapabiliyoruz.

CSS
  @GetMapping(path = "/students/list", version = "1.1")Code language: CSS (css)

Örnek Uygulama

application.propertis Konfigürasyonu

İlk olarak, application.properties dosyamızda versiyonlama ayarlarını yapılandıralım:

PHP
spring.mvc.apiversion.default=1.0.0
spring.mvc.apiversion.use.header=API-Version
spring.mvc.apiversion.supported=1.0,2.0,3.0Code language: PHP (php)
  • spring.mvc.apiversion.default: Versiyon belirtilmediğinde kullanılacak varsayılan versiyondur.
  • spring.mvc.apiversion.use.header: İstemcinin versiyon bilgisini göndereceği HTTP header adı
  • spring.mvc.apiversion.supported: Desteklenen API versiyonları

RestController

PHP
/**
 * @author burakkutbay
 */
@RestController
@RequestMapping("/students")
public class StudentController {

    @GetMapping(path = "/list", version = "1.1")
    public String getStudents() {
        return "Hello students! version 1.1";
    }

    @GetMapping(path = "/list", version = "3.5")
    public String getStudentsV35() {
        return "Hello students! version 3.5";
    }

    @GetMapping(path = "/list", version = "3.7+")
    public String getStudentsV37() {
        return "Hello students! version 3.7+";
    }
}Code language: PHP (php)

version = "3.7+" şeklindeki kullanım, 3.7 ve üzeri tüm versiyonlar için bu endpoint’in kullanılacağını belirtir.

Client Tarafında İstek Gönderme

İstemci tarafından API’ye istek gönderirken, versiyon bilgisini HTTP header’da iletmemiz gerekiyor:

JavaScript
curl -H "API-Version: 1.1" http://localhost:8080/students/listCode language: JavaScript (javascript)

Hata Yönetimi

Desteklenmeyen bir API versiyonu ile istek gönderildiğinde, sistem otomatik olarak HTTP 400 (Bad Request) hatası döner.

Spring Framework 7.0, Spring Boot 4, API versiyonlama, REST API, header based versioning, backward compatibility, Java Spring, microservices versioning

İlgili Spring Boot içerikleri

İlgili Spring ve DevOps içerikleri

Spring Boot dersleri, Spring Cloud Bus, Testcontainers ve Docker notları ile ilgili rehberleri inceleyin.

İlgili Spring kaynakları

API tasarımını derinleştirmek için Spring Boot Dersleri merkez rehberine ve Spring Boot exception handling yazısına göz atabilirsiniz.

Etiketler · 9

Yorum yaz

E-posta adresin yayımlanmaz. Zorunlu alanlar * ile işaretli.