Çoğu geliştirici iş akışı hala terminal üzerinden çalışır ve yıllardır ayakta kalan araçlar tek bir özelliği paylaşma eğilimindedir: açık kaynak olmaları. Kodu okuyabilir, bir sunucu çalıştıran her şeyi kendi sunucunuzda barındırabilir ve asla bir lisans veya "satış ekibiyle iletişime geçin" engeliyle karşılaşmazsınız. Bir araç MIT veya Apache lisanslıysa ve GitHub'da barınıyorsa, kendi kontrol edebileceğiniz bir bakım sinyali alırsınız ve proje durakladığında çatallama özgürlüğüne de sahip olursunuz.
Bu yazı, günlük API geliştirme ve arka uç işlerinde yer edinen ücretsiz, gerçek anlamda açık kaynaklı CLI araçlarının derlenmiş bir listesidir. Buradaki her araç, izin verici veya copyleft bir lisans altında yayınlanır, kaynak kodunu GitHub'da tutar ve çalıştırmak için hiçbir maliyeti yoktur. Odak noktası, ham boyut veya başlangıç hızı değil, lisans ve kilitlenmedir.
Ana döngü için yedi araç edineceksiniz: istekler yapmak, JSON'ı ayrıştırmak, HTTP akışlarını test etmek, GitHub ile çalışmak ve yerel bir sunucuyu internete açmak. Her bir giriş lisansı belirtir, depoya bağlantı verir ve nasıl çalıştığını görebilmeniz için gerçek bir komut gösterir. Ayrıca, ücretsiz katmanlı bir ticari aracın nerede uygun olduğuna dair dürüst bir not da bulunmaktadır, bu sayede onu açık kaynak bir girişle karıştırmazsınız.
Bir CLI aracını geliştirme için "açık kaynak" yapan nedir?
Birçok araç indirmesi ücretsizdir ancak altında kapalıdır veya temelinde açıktır ancak kullanışlı kısımları ücretli bir duvarın arkasındadır. Bu liste için bir araç, üç kontrolü karşılıyorsa nitelikli sayılır:
- Lisans. OSI onaylı bir lisans altında yayınlanır: MIT, Apache 2.0, BSD veya GPL. Bu, onu ticari olarak kullanmanıza, kendi sunucunuzda barındırmanıza ve sormadan çatallamanıza olanak tanır.
- GitHub'da (veya eşdeğerinde) Kaynak Kod. Her satırı okuyabilir, sorunları bildirebilir ve bakım durumunu commit geçmişinden ve sürüm döngüsünden değerlendirebilirsiniz.
- Kilitlenme Yok. Zorunlu hesap yok, kapatılamayan telemetri yok, kiralamak zorunda kaldığınız sunucu bileşeni yok. Bir hizmet çalıştırıyorsa, o hizmeti kendiniz çalıştırabilirsiniz.
Yıldızlar ve son commit'ler de önemlidir, ancak ikincildirler. Ticari kullanımı kısıtlayan, kaynak kodu açık lisanslı popüler bir araca kıyasla, sessiz, istikrarlı bir MIT aracı daha iyidir. Herhangi bir şeyi standartlaştırmadan önce LİSANS dosyasını kontrol edin.
curl: evrensel HTTP istemcisi
curl, neredeyse diğer tüm HTTP araçlarının ölçüldüğü bir araçtır. Düzinelerce protokolü destekler, neredeyse her işletim sisteminde varsayılan olarak gelir ve 1996'dan beri sürekli olarak bakımı yapılmaktadır. İzin verici curl lisansı (bir MIT/X türevi) altında lisanslıdır ve kaynak kodu github.com/curl/curl adresindedir.
API çalışmaları için curl, en düşük ortak paydalı istek aracınızdır. Zaten yüklü olduğundan, herhangi bir betik veya CI işi ona güvenebilir.
curl -s -X POST https://api.github.com/repos/curl/curl/issues \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Test issue","body":"Filed from curl"}'
En iyisi: taşınabilirlik ve betik oluşturma. Bir kabuk çalışıyorsa, curl de çalışır. Dürüst sınırlaması ergonomidir. Ham curl çıktısı yoğundur, başlık işleme ayrıntılıdır ve bir JSON gövdesini okumak, onu başka bir yere aktarmak anlamına gelir. Sonraki iki aracın tam olarak bu yüzden var olmasının nedeni budur.
HTTPie: İnsan dostu çıktıya sahip curl
HTTPie, sadece betikler için değil, insanlar için geliştirilmiş modern bir HTTP istemcisidir. İstekler düz İngilizce gibi okunur, JSON varsayılan gövde türüdür ve yanıtlar renkli ve biçimlendirilmiş olarak gelir. BSD-3-Clause lisansı altındadır ve github.com/httpie/cli adresinde açık kaynaktır.

Pip ile kurun, ardından `http` komutunu kullanın:
pip install httpie
http POST httpbin.org/post name=apidog role=platform
İsteğin tamamı bu. `name=apidog` otomatik olarak bir JSON alanı haline gelir, başlıklar ve durum renkli olarak yazdırılır ve gövde ikinci bir araca gerek kalmadan güzelce biçimlendirilir. En iyisi: etkileşimli keşif ve elle hata ayıklama. Dürüst sınırlaması, bir Python paketi olmasıdır, bu nedenle tek bir statik ikiliye göre daha ağır bir kurulumdur ve kısıtlı CI imajlarında hala curl'e başvurmanız gerekebilir.
jq: her işlem hattının ihtiyaç duyduğu JSON işlemcisi
API'ler JSON döndürür ve jq, onu komut satırından nasıl parçalayacağınızdır. Küçük bir sorgu diliyle alanları filtreler, yeniden şekillendirir ve çıkarır, ayrıca bir pipe içinde curl veya HTTPie ile sorunsuz bir şekilde birleşir. jq, MIT lisanslıdır ve github.com/jqlang/jq adresindeki topluluk tarafından sürdürülmektedir.

Bir API yanıtını doğrudan ona yönlendirin:
curl -s https://api.github.com/repos/jqlang/jq \
| jq '{name: .name, stars: .stargazers_count, license: .license.spdx_id}'
Bu, büyük bir yanıttan üç alanı çeker ve temiz bir nesne oluşturur. En iyisi: gürültülü JSON'ı bir betiğin sonraki adımı için tam olarak ihtiyacınız olan şekle dönüştürmek. Dürüst sınırlaması öğrenme eğrisidir. jq'nun sözdizimi güçlü ama özlüdür ve karmaşık dönüşümler hızla şifreli hale gelebilir. Ancak günlük alan çıkarma için, öğleden sonra ihtiyacınız olanın %90'ını öğrenirsiniz.
gh: GitHub CLI
gh, GitHub'ı terminalinize getirir: çekme istekleri, sorunlar, sürümler, Actions çalışmaları ve API çağrıları, hepsi bir tarayıcı açmadan. Go ile yazılmıştır, MIT lisanslıdır ve github.com/cli/cli adresinde bulunur. Birçok API ve arka uç işi GitHub depolarında yaşadığı için, temel araç setine aittir.

Bir kullanışlı hile: `gh api`, GitHub REST ve GraphQL API'leri üzerinde kimlik doğrulamalı, sayfalandırılmış bir sarıcı sunar, böylece tokenleri curl'e elle yazmak zorunda kalmazsınız.
gh api repos/cli/cli/releases --jq '.[0].tag_name'
Bu, gh'nin yerleşik jq filtresini kullanarak en son sürüm etiketini yazdırır. En iyisi: CI iş akışlarından sürüm otomasyonuna kadar GitHub'ı betiklemek. Dürüst sınırlaması kapsamıdır; tasarım gereği sadece GitHub içindir. GitLab veya Gitea için kendi CLI'larını veya API'lerine karşı düz curl kullanmak isteyeceksiniz.
Hurl: Taahhüt edebileceğiniz düz metin HTTP testleri
Hurl, basit bir düz metin dosyasında tanımlanan HTTP isteklerini çalıştırır ve test eder. İstekleri yazar, durum kodları, başlıklar ve JSON gövdeleri üzerinde iddialar oluşturur ve bir yanıttan değerleri yakalayarak çağrıları zincirlersiniz. "API'yi test et" işlemini git'e kaydettiğiniz bir dosyaya dönüştürür. Hurl, Rust ile yazılmıştır, Apache 2.0 lisanslıdır ve Orange tarafından github.com/Orange-OpenSource/hurl adresinde sürdürülmektedir.

Bir `.hurl` dosyası yazın:
GET https://api.github.com/repos/Orange-OpenSource/hurl
HTTP 200
[Asserts]
jsonpath "$.name" == "hurl"
jsonpath "$.stargazers_count" > 1000
Ardından çalıştırın:
hurl --test repo.hurl
Hurl, her iddia geçtiğinde 0, bir tanesi başarısız olduğunda sıfırdan farklı bir değerle çıkar, bu da onu doğrudan CI'a entegre edilebilir hale getirir. En iyisi: tüm bir ekibin bir çerçeve öğrenmeden düzenleyebileceği, okunabilir, sürüm kontrollü entegrasyon testleri. Dürüst sınırlaması, HTTP istek/yanıt testlerine odaklanmasıdır; tam bir sözleşme testi veya yük testi aracı değildir. CLI testinin şartname odaklı API geliştirme iş akışına nasıl uyduğuna daha geniş bir bakış için, doğrulama dosyası bir OpenAPI gerçeklik kaynağı ile iyi eşleşir.
cloudflared: ücretli tünel olmadan yerel bir sunucuyu açığa çıkarma
Bazen dizüstü bilgisayarınızda çalışan API için genel bir URL'ye ihtiyacınız olur: bir webhook geri araması, bir demo, gerçek bir ana bilgisayara karşı bir mobil test. cloudflared, Cloudflare'ın tünel istemcisidir ve hızlı tünel modu, tek bir komutla ve hesap gerektirmeden geçici bir genel `*.trycloudflare.com` URL'si sunar. Go ile yazılmıştır, Apache 2.0 lisanslıdır ve github.com/cloudflare/cloudflared adresinde açık kaynaktır.
Yerel bağlantı noktanıza yönlendirin:
cloudflared tunnel --url http://localhost:3000
Durana kadar `localhost:3000`'e yönlendiren genel bir HTTPS URL'si yazdırır. En iyisi: hiçbir şeye kaydolmak istemediğinizde hızlı, ücretsiz, geçici tüneller. Tamamen npm ekosisteminde kalmayı tercih ediyorsanız, localtunnel (MIT) `npx localtunnel --port 3000` ile aynı işi yapar. Hızlı tünellerdeki dürüst sınırlama: URL rastgele ve geçicidir ve kararlı adlandırılmış tüneller için bir Cloudflare hesabı ve yapılandırması oluşturmanız gerekir, ancak istemci her iki durumda da açık kaynak olmaya devam eder.
git: bir GUI değil, bir CLI olarak sürüm kontrolü
git'in öncelikle bir komut satırı aracı olduğunu unutmak kolaydır. Yukarıdaki her API spesifikasyonu, test dosyası ve Hurl senaryosu bir git deposunda yer alır ve gerçek güç CLI'da bulunur: hassas hazırlık, bisect, rebase ve bir commit gerçekleşmeden önce API testlerinizi çalıştıran hook'lar. git, GPLv2 lisanslıdır ve github.com/git/git adresinde açık olarak geliştirilmiştir.
Araç kitini bir araya getiren küçük bir örnek: kod kaydedilmeden önce Hurl testlerinizi çalıştıran bir pre-commit hook'u.
echo 'hurl --test *.hurl' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
En iyisi: diğer her şeyin üzerinde durduğu alt katman olmak. İlk günden itibaren kendi kendine barındırılır, sunucu gerektirmez ve her anlamda çatallanabilir. Dürüst sınırlama, git'in proje barındırma değil, sürüm kontrolü olmasıdır; barındırma katmanı (GitHub, GitLab, Gitea) ayrı bir seçimdir ve bunlardan sadece birkaçı kendi başına açık kaynaktır.
Dürüst bir ara not: Apidog nerede duruyor
Apidog açık kaynak değildir, bu yüzden bu listede bir OSS girişi olarak yer almaz. Ücretsiz katmanı olan ticari bir üründür ve burada adının geçmesinin bir nedeni vardır: yukarıdaki araçlar tek tek mükemmeldir, ancak onları elle bir araya getirmek zorunda kalırsınız. İstekler için curl, ayrıştırma için jq, testler için Hurl, ayrı bir mock sunucusu, bir belge oluşturucu, kabuk profillerinde yönetilen ortam değişkenleri.

Apidog tasarımı, test etmeyi, sahteyi ve dokümantasyonu tek bir çalışma alanında birleştirir ve apidog-cli bunu terminale taşır. Bu bir npm paketidir (npm install -g apidog-cli) ve test senaryolarını çalıştırır, uç noktaları ve şemaları yönetir, sahte beklentiler oluşturur ve OpenAPI'yi içe veya dışa aktarır; tüm bunları betiklerin ve AI ajanlarının okuyabileceği yapılandırılmış JSON çıktısıyla yapar. apidog run, tümü geçtiğinde 0, başarısız olduğunda sıfırdan farklı bir değerle çıkar, bu yüzden Hurl gibi CI'a entegre edilebilir.
Dürüst bir çerçeveleme: sıfır kilitlenme ve tam kaynak erişimi istiyorsanız, açık kaynak araç seti doğru seçimdir ve bu makale de bununla ilgilidir. Yedi aracı bir araya yapıştırmak ve tesisatı kendiniz sürdürmek yerine, Apidog'un ücretsiz katmanı ve CLI'sı size entegre bir alternatif sunar. Her ikisi de geçerlidir; farklı şeyler için optimize edilmiştir. CLI yolunu seçerseniz, kurulum rehberi kimlik doğrulama ve ilk komutları adım adım açıklar.
Nasıl Seçilir
Aracı işe uygun hale getirin. Çoğu geliştirici bunlardan birkaçını bir arada kullanır: getirme için curl veya HTTPie, ayrıştırma için jq, test için Hurl, her şeyi versiyonlamak için git.
| Araç | En İyisi | Kurulum | Açık kaynak mı? | Notlar |
|---|---|---|---|---|
| curl | Taşınabilir istekler, betik oluşturma | Önceden yüklü | Evet (curl/MIT-tarzı) | Zaten her sistemde bulunur |
| HTTPie | İnsan dostu hata ayıklama | pip install httpie |
Evet (BSD-3-Clause) | Varsayılan olarak renkli, JSON |
| jq | JSON yanıtlarını ayrıştırma | paket yöneticisi / ikili | Evet (MIT) | İşlem hattı yapıştırıcısı |
| gh | GitHub'ı betikleme | paket yöneticisi / ikili | Evet (MIT) | Tasarım gereği sadece GitHub |
| Hurl | Taahhüt edilebilir HTTP testleri | Tek ikili | Evet (Apache 2.0) | Başarısızlık durumunda sıfırdan farklı çıkar |
| cloudflared | Ücretsiz genel tüneller | Tek ikili | Evet (Apache 2.0) | Hızlı tüneller hesap gerektirmez |
| git | Sürüm kontrolü | Önceden yüklü | Evet (GPLv2) | Diğerlerinin dayanağı |
| apidog-cli | Entegre API iş akışı | npm i -g apidog-cli |
Hayır (ücretsiz katman) | Tasarım + test + mock + dokümanlar |
Genel kural: tesisatın kontrolünü elinizde tutmak istediğinizde tek amaçlı açık kaynak araca başvurun, istemediğinizde ise entegre bir platforma. Tam bir araç zincirinde bu dengeyi tartıyorsanız, Apidog'un kapsamlı bir API geliştirme platformu olarak ayrıntılı açıklaması entegre yolun nelerin yerini aldığını kapsar.
Özet
Açık kaynak, incelenebilir, kendi kendine barındırılabilir ve kilitlenmesiz olması sayesinde terminalde yerini alır. curl, HTTPie, jq, gh, Hurl, cloudflared ve git, API ve arka uç geliştirmenin temelini kapsar ve her biri okuyabileceğiniz bir lisansa ve çatallayabileceğiniz bir depoya sahiptir. Mevcut döngünüze uygun iki veya üçüyle başlayın ve ihtiyaç duydukça diğerlerini ekleyin.
Bunların üzerine ajan güdümlü iş akışları inşa ediyorsanız, aynı terminal öncelikli prensipler geçerlidir ve yapılandırılmış JSON çıktısı bağlayıcı doku haline gelir; API geliştirme için yapay zeka kodlama yardımcıları hakkındaki yazı bu konuya daha derinlemesine değinir. Ve yedi ayrı aracı sürdürmek başlı başına bir iş gibi gelmeye başlarsa, Apidog'u İndirin ve herhangi bir yöne karar vermeden önce entegre yolun neye benzediğini görmek için Apidog CLI'yı deneyin.
