OpenAPI Nedir? Swagger ile API Dokümantasyonu
OpenAPI (Swagger) ile API’lerini standartlaştır, dokümante et, mock ve client üret. Adım adım pratik rehber ve örnek spec.
OpenAPI Nedir? Swagger ile API Dokümantasyonu
Meta Description
OpenAPI (Swagger) ile API dokümantasyonu oluşturun, sözleşme tabanlı geliştirmeye geçin. Örnek YAML, araçlar ve ipuçları burada.
Giriş (Introduction)
Bir API yazıyorsunuz ama ekipte herkes farklı anlıyor: Frontend “hangi alan zorunlu?” diye soruyor, mobil ekip “hata formatı nedir?” diye bekliyor, QA “senaryoları nasıl çıkaracağım?” diye bocalıyor. Sonuç: yanlış entegrasyonlar, geri dönüşler ve üretimde sürprizler.
OpenAPI tam bu noktada devreye girer: API’nizin tek bir doğru kaynağını (single source of truth) oluşturur. Bu yazıda OpenAPI nedir, Swagger ile nasıl dokümantasyon üretilir, nasıl doğrulanır ve ekip akışına nasıl entegre edilir adım adım göreceksiniz.
OpenAPI Nedir? (API Sözleşmesi Mantığı)
OpenAPI, HTTP API’lerini tanımlamak için kullanılan, dil bağımsız bir spesifikasyondur. Eskiden “Swagger” adıyla bilinse de bugün OpenAPI Specification (OAS) olarak standardize edilmiştir.
OpenAPI ile şunları netleştirirsiniz:
- Endpoint’ler (URL + HTTP method)
- Request/response gövdeleri (JSON şemaları)
- Query/path parametreleri
- Status code’lar ve hata formatı
- Kimlik doğrulama (Bearer, API Key, OAuth2 vb.)
Bunu neden yapmalıyım? Çünkü sözleşme yazınca entegrasyonlar tahmine değil, tanıma dayanır. Üretimde “biz böyle sanmıştık” cümlesi azalır.
OpenAPI ile Neler Kazanırsınız?
Aşağıdaki tablo, OpenAPI’nin pratik faydalarını özetler:
| Problem | OpenAPI ile Çözüm | Sonuç |
|---|---|---|
| Dokümantasyon güncel değil | Spec tek kaynak olur | Doküman her zaman doğru |
| Frontend backend’i bekliyor | Mock server / örnek response | Paralel geliştirme |
| Hata formatı dağınık | Standart error schema | Daha hızlı debug |
| API değişince kırılmalar | Spec diff + validation | Geriye dönük uyum |
| Client yazımı zaman alıyor | Codegen ile SDK | Daha az manuel iş |
LSI anahtar kelimeler (ilişkili): Swagger UI, API dokümantasyonu, API sözleşmesi, contract-first, schema validation, mock server, code generation.
OpenAPI 3.0 Temelleri: En Küçük Çalışan Örnek
Aşağıdaki örnek, basit bir “sipariş” API’sini OpenAPI 3.0 ile tanımlar. (YAML, okunabilir olduğu için yaygın.)
openapi: 3.0.3
info:
title: Order API
version: 1.0.0
description: Basit sipariş servisi
servers:
- url: https://api.example.com
paths:
/orders/{id}:
get:
summary: Sipariş detayını getir
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Order:
type: object
required: [id, status, total]
properties:
id:
type: string
example: "ord_123"
status:
type: string
enum: [CREATED, PAID, SHIPPED, CANCELED]
total:
type: number
format: float
example: 199.90
Error:
type: object
required: [code, message]
properties:
code:
type: string
example: "ORDER_NOT_FOUND"
message:
type: string
example: "Order not found"
Bu spec size ne verir?
/orders/{id}endpoint’i, parametreleri ve olası cevapları tek yerde- Order ve Error şemaları
- Swagger UI ile otomatik dokümantasyon
Swagger UI ile Dokümantasyonu 5 Dakikada Yayına Alın
OpenAPI spec’inizi görsel ve test edilebilir hale getirmenin en pratik yolu Swagger UI.
Seçenek A: Docker ile hızlı kurulum
docker run -p 8080:8080 \
-e SWAGGER_JSON=/app/openapi.yaml \
-v $(pwd)/openapi.yaml:/app/openapi.yaml \
swaggerapi/swagger-ui
Tarayıcıda açın:
http://localhost:8080
Seçenek B: Uygulamanın içine gömülü servis
Birçok framework (Spring Boot, FastAPI, NestJS) Swagger UI entegrasyonunu hazır getirir. Burada kritik nokta:
- Spec’in otomatik üretildiği yerlerde bile şema ve örnekleri gözden geçirin
- “Her şey otomatik” yaklaşımı, yanlış/eksik doküman riskini artırabilir
Contract-First Yaklaşım: Önce Spec, Sonra Kod
OpenAPI’yi iki şekilde kullanabilirsiniz:
- Code-first: Koddan doküman üretirsiniz.
- Contract-first: Önce OpenAPI sözleşmesi yazılır, sonra backend/frontend buna göre geliştirilir.
Neden contract-first daha iyi olabilir?
- API değişiklikleri planlı olur
- Ekipler paralel ilerler
- Geriye dönük uyum (backward compatibility) daha kolay yönetilir
Gerçek hayattan örnek:
- Bir ödeme servisinde
amountalanı önce integer (kuruş) iken sonra float’a dönerse, mobil uygulamalar kırılabilir. Contract-first ile bu değişim PR aşamasında görünür olur.
Validation ve CI: “Spec Doğru mu?”yı Otomatik Kontrol Edin
Spec’in var olması yetmez; doğru ve güncel kalması gerekir.
Adım adım önerilen kontrol listesi
- Spec dosyasını repoya koyun (
openapi.yaml) - Pull request’te otomatik lint çalıştırın
- Breaking change kontrolü ekleyin
Popüler araçlar
- Spectral: OpenAPI lint (kural tabanlı)
- openapi-generator: Client/server kod üretimi
- Swagger Editor: Spec yazma ve anında hata görme
Örnek: Spectral ile basit lint
npm i -g @stoplight/spectral-cli
spectral lint openapi.yaml
Bunu neden yapmalıyım? Çünkü doküman “insan disipliniyle” güncel kalmaz. CI ile “sözleşme bozuldu mu?” sorusunu otomatik cevaplarsınız.
OpenAPI ile Mock Server ve Client SDK Üretimi
OpenAPI’nin en büyük pratik faydalarından biri: tek spec’ten farklı çıktılar üretebilmeniz.
Mock server (entegrasyon beklemeden)
- Frontend ekibi backend’i beklemeden ekranları bitirebilir.
- QA test senaryolarını erkenden çıkarabilir.
Client SDK (örnek)
openapi-generator ile TypeScript client üretimi örneği:
npx @openapitools/openapi-generator-cli generate \
-i openapi.yaml \
-g typescript-fetch \
-o ./sdk
Üretilen SDK ile:
- Tip güvenliği artar
- Yanlış endpoint/alan kullanımı azalır
Sık Sorulan Sorular (FAQ)
1) OpenAPI ile Swagger aynı şey mi?
Yakın kavramlar. OpenAPI spesifikasyonun adı, Swagger ise ekosistemdeki araçların (Swagger UI, Swagger Editor) markası gibi düşünebilirsiniz.
2) OpenAPI 2.0 mı 3.0 mı kullanmalıyım?
Yeni projelerde genellikle OpenAPI 3.x önerilir. Daha iyi schema tanımı, content-type yönetimi ve modern ihtiyaçlar için daha uygundur.
3) Dokümantasyonu koddan otomatik üretmek yeterli mi?
Her zaman değil. Otomatik üretim hızlıdır ama örnekler, hata formatı, edge-case açıklamaları çoğu zaman eksik kalır. Kritik alanları elle zenginleştirin.
4) OpenAPI spec’ini nerede tutmalıyım?
En iyi pratik: uygulama reposunda versiyonlu tutmak. Böylece değişiklikler PR ile incelenir ve geri alınabilir.
5) OpenAPI performansı etkiler mi?
Spec bir dokümandır; doğrudan runtime performansı etkilemez. Etki eden kısım, spec’e bağlı çalışan middleware/validation çözümlerinin nasıl kullanıldığıdır.
Sonuç
OpenAPI, API dokümantasyonunu “sonradan yazılan notlar” olmaktan çıkarıp sözleşmeye dönüştürür. Swagger UI ile hızlıca görünür hale getirir, lint/validation ile CI’da güvence altına alır, mock ve SDK üretimiyle ekiplerin paralel çalışmasını sağlar.
Bir sonraki adım: Mevcut API’niz için küçük bir openapi.yaml çıkarın ve önce sadece 1 endpoint ile başlayın. İsterseniz yorumlara kullandığınız stack’i (Node, Java, .NET, Python) yazın; ona uygun en pratik OpenAPI kurulum yolunu önereyim.