API işbirliği eskiden ağır bir uygulama açmak, senkronizasyonu beklemek ve ekip arkadaşınızın ne değiştirdiğini anlamak için paneller arasında gezinmek anlamına geliyordu. OpenAPI ile tanımlanmış bir API’de buna gerek yok: spesifikasyonu Git ile versiyonlayabilir, değişiklikleri terminalde inceleyebilir ve güvenli değişiklikleri CI üzerinden birleştirebilirsiniz.
Bu rehber, API işbirliğinin üç temel işini terminalden yapan hafif CLI araçlarını gösterir:
- Versiyonlama: Ekipte herkesin hangi OpenAPI sürümünü kullandığını takip etmek.
- İnceleme: Ne değiştiğini ve değişikliğin bozucu olup olmadığını görmek.
- Birleştirme ve paylaşım: Onaylanan değişikliği ortak doğruluk kaynağına eklemek.
Daha geniş bir araç seçimi için API işbirliği araçları derlememize bakabilirsiniz. Bu yazı, terminal öncelikli iş akışına odaklanır.
OpenAPI, bu araçların okuyup yazdığı resmi standarttır. Ortak diliniz openapi.yaml olduğunda, araçları Git kancalarına ve CI boru hatlarına kolayca bağlayabilirsiniz.
Bir CLI aracını API işbirliği için hafif yapan nedir?
Hafif bir CLI aracı genellikle şu özellikleri taşır:
-
Küçük kurulum: Tek bir ikili dosya,
npxkomutu veyanpm install -g. - Hızlı çalışma: Komutu çalıştırır, sonucu üretir ve çıkar. Betikler ile Git kancaları için uygundur.
- Az yapılandırma: Doğrudan bir OpenAPI dosyasına karşı çalışır.
- Terminal önceliği: Çıktısı terminalde okunabilir ve CI sistemleri tarafından tüketilebilir.
- Dar kapsam: Fark bulma, lintleme, yayınlama veya PR yönetimi gibi bir işi iyi yapar.
Aşağıdaki araçlar en odaklı seçeneklerden daha entegre akışlara doğru ilerler.
1. Git + spesifikasyon dosyası
En hafif araç zaten kullandığınız araçtır: Git.
openapi.yaml dosyanızı uygulama koduyla aynı depoda tutarsanız, geçmiş, inceleme ve değişiklik takibi varsayılan olarak gelir. Bir PR içinde dosya değişikliklerini görebilir, satır bazlı yorum yapabilir ve onay sonrası değişikliği birleştirebilirsiniz.
Bu yaklaşım, Git-yerel API işbirliğinin temelidir.
# Spesifikasyonu depoya ekleyin
git add openapi.yaml
git commit -m "Add pagination params to GET /orders"
# Ana dalla farkı inceleyin
git diff main -- openapi.yaml
En iyisi: Yeni araç kurmadan geçmiş ve kod incelemesi yapmak.
Sınırlama: YAML üzerinde ham Git diff çıktısı gürültülü olabilir. Anahtar sıralaması veya girintileme değişse bile API değişmiş gibi görünür. Bu nedenle Git’i anlamsal diff üreten araçlarla eşleştirmek iyi bir pratiktir.
2. oasdiff
oasdiff, iki OpenAPI spesifikasyonunu karşılaştıran tek bir Go ikili dosyasıdır. Değişikliklerin bozucu olup olmadığını belirler ve CI içinde birleştirme kapısı olarak kullanılabilir.
# macOS kurulumu
brew install oasdiff
# Yeni spesifikasyon mevcut istemcileri bozuyorsa komut başarısız olur
oasdiff breaking main-spec.yaml pr-spec.yaml
# exit 0 = güvenli
# exit 1 = bozucu değişiklik bulundu
Tüm değişikliklerin okunabilir özetini almak için:
oasdiff changelog base.yaml revision.yaml
CI iş akışına eklemek için örnek:
- name: Check breaking API changes
run: oasdiff breaking main-spec.yaml openapi.yaml
En iyisi: Bozucu API değişikliklerini merge öncesinde engellemek.
Sınırlama: Dokümantasyon yayınlamaz, dal veya PR yönetmez. Görevi spesifikasyon farklarını tespit etmektir.
3. Optic
Optic, OpenAPI değişikliklerini karşılaştırmak, lintlemek ve incelemek için npm ile kurulan bir CLI aracıdır. $ref, oneOf, allOf gibi karmaşık şema yapılarını anlayabilir.
# Kurulum
npm install -g @useoptic/optic
# Mevcut spesifikasyonu main dalındaki sürümle karşılaştırın
optic diff openapi.yaml --base main --check
Bunu PR doğrulama adımı olarak kullanarak API düzeyindeki değişiklikleri görünür hale getirebilirsiniz.
En iyisi: PR içinde yapılandırılmış API değişikliği incelemesi yapmak.
Sınırlama: Node tabanlı olduğu için tek bir Go ikilisinden daha ağırdır. Kurallardan tam fayda sağlamak için yapılandırma ve denetim kurallarını benimsemeniz gerekir.
4. Bump.sh CLI
Bump.sh CLI, API belgelerini terminalden yayınlamanıza ve sürümler arasındaki farkları karşılaştırmanıza yardımcı olur.
Temel kullanım şu şekildedir:
# Kurulum
npm install -g bump-cli
# Paylaşılan API belgelerinin yeni sürümünü yayınlayın
bump deploy openapi.yaml --doc my-api --token $BUMP_TOKEN
# Yerel dosya ile yayınlanan sürüm arasındaki farkı inceleyin
bump diff openapi.yaml --doc my-api
PR açıklamasına veya CI çıktısına değişiklik günlüğü eklemek için bump diff kullanabilirsiniz.
En iyisi: Ortak, güncel ve insan tarafından okunabilir API belgelerini spesifikasyonla senkron tutmak.
Sınırlama: Barındırılan belgeler ve dağıtım akışı ücretli bir Bump.sh ürününe bağlıdır. CLI istemcidir; ortak dokümantasyon yüzeyi platformlarında barındırılır.
5. Redocly CLI
Redocly CLI, OpenAPI spesifikasyonlarını lintlemek, paketlemek ve ortak kayıt defterine göndermek için kullanılabilir.
Özellikle çok dosyalı ve $ref kullanan API tanımlarında önce tek dosyalık bir yapıt üretmek faydalıdır:
# Kurulum gerektirmez; npx ile çalıştırın
npx @redocly/cli lint openapi.yaml
# Çok dosyalı spesifikasyonu tek dosyada paketleyin
npx @redocly/cli bundle openapi.yaml -o dist/openapi.yaml
Paylaşılan kayıt defterine sürüm göndermek için:
# API anahtarı gerekir
npx @redocly/cli push openapi.yaml \
--organization "Acme" \
--project "orders-api"
En iyisi: Kurumsal stil kurallarına göre lintleme, çoklu dosya spesifikasyonlarını paketleme ve kanonik bir API kaynağı paylaşma.
Sınırlama: lint ve bundle yerelde çalışır; push ve kayıt defteri Redocly’nin barındırılan platformunun parçasıdır. Daha derin düzenleme iş akışları için işbirlikçi API spesifikasyon düzenleme rehberine bakın.
6. GitHub CLI (gh)
İnceleme süreciniz GitHub PR’larında ilerliyorsa, GitHub CLI tarayıcıya ihtiyaç duymadan PR oluşturmanızı, inceleyici istemenizi ve durumu kontrol etmenizi sağlar.
# Spesifikasyon değişikliği için PR oluşturun
gh pr create \
--title "Add /orders pagination" \
--body "Adds page + limit params"
# PR'ı onaylayın
gh pr review --approve
Pratikte gh aracını oasdiff veya Optic ile birlikte kullanın:
- CLI ile PR oluşturun.
- CI’da anlamsal OpenAPI diff çalıştırın.
- Bozucu değişiklik varsa merge işlemini engelleyin.
- İnceleme tamamlandığında PR’ı birleştirin.
En iyisi: GitHub kullanan ekiplerde terminalden PR inceleme ve birleştirme akışını yürütmek.
Sınırlama: PR yönetir, API semantiğini analiz etmez. Bozucu değişiklik denetimi için oasdiff veya Optic eklemelisiniz.
7. Apidog CLI
Apidog CLI, tek amaçlı bir ikili yerine Apidog platformundaki tasarım, versiyonlama ve işbirliği verilerine terminalden erişen proje odaklı bir CLI aracıdır.
Kurulum:
npm install -g apidog-cli
apidog login --with-token $APIDOG_TOKEN
İşbirliği için üç komut grubu öne çıkar:
branchmerge-requestgit-connection
İzole bir çalışma dalı oluşturmak için:
# Paylaşılan bir değişiklik için sprint dalı başlatın
apidog branch create \
--type sprint \
--name "orders-pagination"
--type bayrağı dal modelini belirler:
-
sprint: Belirli özellik veya sürüm çalışmaları için. -
general: Sürekli geliştirme çalışmaları için. -
ai: Bir aracının kaynak kodunu değiştirmeden kaynakları düzenlemesi için izole dal.
Değişiklik hazır olduğunda doğrudan ana dala birleştirmek yerine merge request oluşturun:
# Korunan main dalı için inceleme isteği oluşturun
apidog merge-request create \
--branch "orders-pagination" \
--endpoint-ids 1,2
Spesifikasyonları Git deposunda yedeklemek ve geçmişini korumak için git-connection komutunu kullanabilirsiniz:
# Proje spesifikasyonlarını Git deposuna bağlama seçeneklerini inceleyin
apidog git-connection --help
Apidog CLI, yapılandırılmış JSON çıktısında agentHints.nextSteps alanını da üretir. Bu, CLI’ın betiklerden veya yapay zeka aracılarından yönetilmesini kolaylaştırır.
Komutların tamamı için Apidog CLI tam kılavuzuna bakın.
En iyisi: Ayrı araçları bir araya getirmeden versiyonlama, inceleme ve birleştirme akışını tek CLI içinde yönetmek.
Sınırlama: Bu bir platform CLI’ıdır; çıplak bir yerel OpenAPI dosyası yerine Apidog projenizle çalışır. Ayrıca OpenAPI linter’ı değildir; stil kuralları için Redocly veya Spectral kullanın. Ekipte rol tabanlı erişim gerekiyorsa RBAC ile güvenli API işbirliği rehberini inceleyin.
Nasıl seçmeli?
Aracı, ekipte çözmek istediğiniz işbirliği problemine göre seçin.
| Araç | En iyi kullanım | Kurulum | Açık kaynak mı? | Not |
|---|---|---|---|---|
| Git + spesifikasyon dosyası | Geçmiş ve inceleme | Zaten yüklü | Evet (Git) | YAML farkları gürültülü olabilir |
| oasdiff | Bozucu değişiklik merge kapısı | brew install oasdiff |
Evet (Apache 2.0) | CI’da çıkış koduyla başarısız olur |
| Optic | PR içinde yapılandırılmış inceleme | npm i -g @useoptic/optic |
Evet (MIT) |
$ref, oneOf gibi yapıları anlar |
| Bump.sh CLI | Dokümantasyon ve diff yayınlama | npm i -g bump-cli |
CLI açık, barındırma ücretli | Node 20+ gerekir |
| Redocly CLI | Lintleme, paketleme, kayıt defterine gönderme | npx @redocly/cli |
CLI açık, kayıt defteri ücretli |
push API anahtarı gerektirir |
| GitHub CLI | Terminalden PR yönetimi | brew install gh |
Evet (MIT) | API semantiğini analiz etmez |
| Apidog CLI | Entegre versiyonlama, inceleme ve birleştirme | npm i -g apidog-cli |
Hayır, ücretsiz katman var |
branch, merge-request, git-connection
|
Çoğu ekip tek bir araçla sınırlı kalmaz. Pratik bir hafif yığın şu şekilde kurulabilir:
Git → spesifikasyon geçmişi
oasdiff / Optic → anlamsal değişiklik ve bozucu değişiklik kontrolü
GitHub CLI → PR oluşturma ve inceleme
Bump.sh / Redocly → dokümantasyon yayınlama
Dallanma, inceleme ve birleştirmeyi tek CLI üzerinden yönetmek istiyorsanız Apidog bu üç alanı birlikte kapsar. Daha geniş seçenekler için API işbirliği ekip araçları karşılaştırmasına göz atın.
Sonuç
Terminalden API işbirliği üç adıma indirgenebilir:
- OpenAPI spesifikasyonunu versiyonlayın.
- Anlamsal farkı inceleyin.
- Onaylanan değişikliği ortak kaynağa birleştirin.
Git versiyonlama ve temel incelemeyi sağlar. oasdiff ve Optic, API değişikliklerinin anlamını ve bozucu etkisini kontrol eder. Bump.sh ile Redocly belgeleri yayınlar; GitHub CLI PR akışını yönetir. Apidog CLI ise versiyonlama, inceleme ve birleştirmeyi tek komut setinde bir araya getirir.
En hızlı başlangıç için spesifikasyonunuzu Git’e ekleyin, CI’da oasdiff breaking çalıştırın ve her API değişikliği için PR açın. Entegre bir akış istiyorsanız Apidog’u indirin, apidog-cli kurun ve terminalden ilk apidog branch create ile merge-request komutlarınızı çalıştırın.
Top comments (1)
Bu makaledeki API işbirliği için CLI araçlarına odaklanmanız gerçekten ilginç, özellikle de OpenAPI spesifikasyonunun entegrasyonu açısından. Benzer bir vấnteri çözmeye çalışırken, oasdiff gibi araçların bozucu değişiklikleri belirlemede ne kadar faydalı olabileceğini gördüm. Ancak,sometimes YAML dosyalarındaki küçük değişiklikler bile büyük sorunlara neden olabilir. Bu nedenle, CLI araçlarının yanı sıra, API istemci kodunun otomatik olarak üretilmesi ve test edilmesi için OpenAPI-generator gibi araçları da kullanıyorum. Bu araçlar API işbirliği sürecini daha da kolaylaştırabilir. Sizce, API işbirliği araçlarını seçerken nelere dikkat edilmeli ve hangilerinin daha geniş bir proje kapsamında kullanılması daha uygun olur?