Sitemap
Selcen Haskırış Canbay

Selcen Haskırış Canbay

Swagger’dan RTK Query’ye: Tek Komutla API Üretimi

4 min readAug 26, 2026

--

Press enter or click to view image in full size

Modern web ve mobil uygulamalarda API katmanı, sistem mimarisinin en kritik bileşenlerinden biridir. Özellikle domain sayısının ve entegrasyon noktalarının arttığı uygulamalarda API yönetimi yalnızca veri alışverişi problemi olmaktan çıkar, ekipler arası senkronizasyon, tip güvenliği, sürüm yönetimi, önceki versiyonlarla uyumluluk, bakım maliyeti gibi konuları da doğrudan etkileyen bir mimari probleme dönüşür. Endpoint sayısı arttıkça elle kod yazımı yavaşlar ve hata riski büyür. Bu nedenle, Swagger tanımının tek kaynak kabul edilip API dosyalarının otomatik üretilmesi günlük geliştirme hayatını gözle görülür sekilde kolaylaştırır.

Bu yazıda, “Swagger değişti -> API katmanı güncellendi” sürecini tek komuta indirip tekrar edilebilir hale getirmek amacıyla kullanılabilecek `api-generate` komutunun ne kazandırdığı, nasıl tanımlandığı, arkasındaki akışın nasıl olduğu ve hangi dosyaların bu süreçte rol aldığı ele alınacaktır.

Avantajları

`api-generate` benzeri bir akış sayesinde:

1. Swagger değiştikten sonra API katmanı dakikalar içinde güncellenir.

2. Elle endpoint yazımından kaynaklanan tutarsızlıklar azalır.

3. Endpointler kategorilere ayrıldığı için kod tabanı daha okunabilir kalır.

4. RTK Query hook’lari otomatik oluştuğu için ekran geliştirme süreçleri hızlanır.

Özetle, bu tip komut ile altyapı operasyonlarına harcanan zaman ve hata oranı azaltılıp ürün geliştirmeye daha fazla odaklanılabilir.

Tek Komut, Üç Adımlı Süreç

Press enter or click to view image in full size

1) Config’i Swagger’dan Üretmek

Bu adımın merkezinde `scripts/update-openapi-config.mjs` bulunur.

Script once `yarn pre-codegen` çalıştırır, sonra `json` dosyası okunup `paths` altından kategori bilgisi çıkarır. Ardından `openapi-config.js` içindeki `outputFiles` blogu otomatik olarak yeniden oluşturulur.

Böylece kategori eşlemelerinin tek tek elle yazılması gerekmez. Swagger’da ne varsa config onunla uyumlu şekilde şekillenir.

Örnek bir path düşünelim:

`/api/Account/GetAccounts`

Bu path’ten kategori `/api/Account` olarak çıkarılır ve hedef dosya şu şekilde üretilir:

`./src/apis/common/accountApi.ts`

Buradaki config’in manuel bakım maliyeti ciddi şekilde düşürülür.

2) Pre-Codegen Neden Var?

`scripts/pre-codegen.sh`, codegen öncesi veri temizliği yapıyor.

Bu script’in amacı Swagger içindeki enum alanlarda yer alan negatif değerleri temizlemektir. Çünku bu tür veriler codegen aşamasında tip üretimini bozabilir veya tutarsız sonuç üretebilir.

Çalışma mantığı:

1. Sistemde `jq` varsa JSON temizliği doğrudan `jq` ile yapılır.

2. `jq` yoksa fallback olarak `node precodegen.js` devreye girer.

Bu sayede farkli geliştirici ortamları arasında davranış tutarlılığı korunur.

3) openapi-config.js’in Stratejik Rolü

Press enter or click to view image in full size

`openapi-config.js`, codegen’in beyni gibi davranır. Burada:

1. Swagger kaynağı (`schemaFile`) tanımlanır.

2. Base RTK Query API dosyası (`apiFile`) belirtilir.

3. Import edilecek API nesnesi (`apiImport`) seçilir.

4. Hook üretimi (`hooks: true`) aktif edilir.

5. Endpointlerin hangi dosyaya gideceği (`outputFiles`) belirlenir.

Get Selcen Haskırış Canbay’s stories in your inbox

Join Medium for free to get updates from this writer.

`pathMatcher` fonksiyonu burada kilit rol oynar. Endpoint path’i regex ile eşleştirilir ve ilgili kategori dosyasına yazılır.

Örneğin;

- Regex: `/\/api\/Account\//i`

- Çıkış dosyası: `./src/apis/common/accountApi.ts`

Bu tasarım sayesinde API katmanı tek ve büyük bir dosya yerine domain bazlı parçalara ayrılır.

4) Asıl Üretim Aşaması: RTK Query Codegen

Sıradaki komut:

npx @rtk-query/codegen-openapi openapi-config.js

Bu adımda codegen:

1. Swagger spec’i parse eder.

2. `outputFiles` kurallarına göre endpointleri böler.

3. Her kategori için ilgili `*Api.ts` dosyasını oluşturur veya günceller.

4. Kullanım için RTK Query hook’larını üretir.

Sonuç: UI tarafında doğrudan kullanılabilecek, daha tutarlı bir API katmanı.

Gerçek Hayat Senaryosu: Yeni Bir Kategori Eklendi

Press enter or click to view image in full size

Swagger tarafına yeni bir grup geldiği düşünülebilir: `/api/Campaign/…`

Bu durumda yapılması gereken sadece aşağıdaki komutu çalıştırmaktır:

yarn api-generate

Kalan adımlar sistem tarafından aşağıdaki şekilde tamamlanır:

1. Yeni kategori tespit edilir.

2. `openapi-config.js` güncellenir.

3. `campaignApi.ts` benzeri yeni dosyalar üretilir.

Bu otomasyon, özellikle büyük ekiplerde API değişikliklerinin ürüne yansıma süresini hissedilir biçimde kısaltır.

Karşılaşılan Sorunlar, Edinilen Deneyimler

1. `jq is not installed` mesajı alınabilir.

Bu bir hata degildir. Script fallback ile devam eder.

2. Yeni endpoint dosyası oluşmadıysa path yapısının kontrol edilmesi gerekir.

Kategori çıkarımı `/api/<Category>/…` desenine gore yapılıyor.

3. Lint problemi görüldüyse post adımının çalıştığı doğrulanmalıdır.

`postCodegen.sh` bu konuda kritik.

4. Eski endpointler görünüyorsa Swagger dosyasının güncelliği kontrol edilmelidir.

Kaynak eskiyse çıktı da eski olur.

Sonuç

Press enter or click to view image in full size

Bu yapı sadece teknik bir codegen otomasyonu degil; geliştirme süreci için bir hız çarpanı olarak değerlendirilebilir. Swagger değişikliği alıp RTK Query katmanına tutarlı, izlenebilir ve tekrar edilebilir şekilde taşınmış olur.

API katmanında “elle müdahale” hala büyük yer tutuyorsa, bu tür bir akış kurmak geliştirme hızına ve kalite istikrarına doğrudan etki eder.

--

--