Çoğu geliştirici iş akışı hâlâ terminalde çalışır. Uzun ömürlü araçların ortak noktası genellikle şudur: kaynak kodları açıktır, lisansları incelenebilir ve gerektiğinde kendi altyapınızda çalıştırılabilirler. MIT, Apache veya GPL gibi bir lisans; aracı ticari projelerde kullanma, denetleme ve proje durursa çatallama özgürlüğü sağlar.
Bu rehber, günlük API geliştirme ve arka uç işleri için ücretsiz, gerçekten açık kaynaklı CLI araçlarını pratik örneklerle bir araya getirir. İstek gönderme, JSON ayrıştırma, HTTP testleri çalıştırma, GitHub otomasyonu ve yerel sunucuyu internete açma gibi temel işleri kapsar.
Bu yazıdaki araçlarla aşağıdaki temel döngüyü kurabilirsiniz:
-
curlveya HTTPie ile API isteği gönderin. -
jqile yanıtı filtreleyin. - Hurl ile isteği test senaryosuna dönüştürün.
-
gitile senaryoları sürüm kontrolüne alın. - Gerekirse
cloudflaredile yerel ortamınızı geçici olarak erişilebilir yapın.
Bir CLI aracını geliştirme için açık kaynak yapan nedir?
Bir aracın ücretsiz indirilebilmesi, onun açık kaynak olduğu anlamına gelmez. Bu listedeki araçlar aşağıdaki üç koşulu karşılar:
- Açık lisans: MIT, Apache 2.0, BSD veya GPL gibi OSI onaylı bir lisans kullanır.
- İncelenebilir kaynak kod: Kaynak kodu GitHub veya eşdeğer bir platformda erişilebilirdir.
- Zorunlu kilitlenme yok: Aracı kullanmak için zorunlu hesap, kapatılamayan telemetri veya kiralanmış bir sunucu bileşeni gerekmez.
Araç seçerken yıldız sayısından önce LICENSE dosyasını kontrol edin. Aktif olmayan ama kararlı bir MIT aracı, ticari kullanımı kısıtlayan popüler bir araçtan daha uygun olabilir.
curl: Evrensel HTTP istemcisi
curl, komut satırında HTTP istekleri için en taşınabilir varsayımdır. Çoğu işletim sisteminde önceden yüklüdür, çok sayıda protokolü destekler ve betikler ile CI işleri için güvenilir bir temel sağlar.
curl, izin verici curl lisansı altında yayımlanır; kaynak kodu github.com/curl/curl adresindedir.
GitHub API ile bir issue oluşturmak için:
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"}'
Pratik kullanım alanları:
- CI içinde API çağrısı yapmak
- Webhook uç noktalarını doğrulamak
- Bash betiklerinden veri çekmek
- HTTP hata ayıklamak
curl güçlüdür; ancak JSON çıktısını okumak ve dönüştürmek için genellikle jq ile birlikte kullanılır.
HTTPie: İnsan dostu çıktıya sahip curl
HTTPie, elle API keşfi ve hata ayıklama için daha okunabilir bir HTTP istemcisidir. JSON gövdelerini varsayılan olarak işler, yanıtı biçimlendirir ve komutları sade tutar.
BSD-3-Clause lisansı altındadır ve kaynak kodu github.com/httpie/cli adresindedir.
Kurulum:
pip install httpie
JSON gövdeli bir POST isteği gönderin:
http POST httpbin.org/post name=apidog role=platform
Bu komutta:
-
POST, HTTP metodudur. -
name=apidogverole=platformalanları JSON gövdesine dönüşür. - Yanıt gövdesi, başlıklar ve durum kodu terminalde biçimlendirilmiş görünür.
HTTPie özellikle geliştirme sırasında uygundur. Kısıtlı CI imajlarında ek Python bağımlılığı istemiyorsanız, aynı iş için curl daha iyi bir varsayımdır.
jq: JSON işlem hattı aracı
API yanıtları çoğunlukla JSON döndürür. jq, JSON içinden alan seçmek, filtrelemek ve çıktıyı başka bir komutun kullanabileceği biçime dönüştürmek için kullanılır.
jq, MIT lisanslıdır ve github.com/jqlang/jq adresinde geliştirilir.
Bir GitHub depo yanıtından yalnızca gerekli alanları alın:
curl -s https://api.github.com/repos/jqlang/jq \
| jq '{name: .name, stars: .stargazers_count, license: .license.spdx_id}'
Örnek çıktı biçimi:
{
"name": "jq",
"stars": 0,
"license": "MIT"
}
Bu yaklaşımı CI'da kullanarak API yanıtından bir sürüm numarası, erişim anahtarı, URL veya durum alanı çıkarabilirsiniz.
Örneğin yalnızca varsayılan branch adını almak için:
curl -s https://api.github.com/repos/jqlang/jq \
| jq -r '.default_branch'
-r parametresi, string değeri JSON tırnakları olmadan yazdırır.
gh: GitHub CLI
gh, GitHub işlemlerini terminalden yapmanızı sağlar: pull request açma, issue yönetimi, sürüm sorgulama, Actions çalıştırma ve GitHub API çağrıları.
Go ile yazılmıştır, MIT lisanslıdır ve github.com/cli/cli adresinde bulunur.
Önce kimlik doğrulaması yapın:
gh auth login
Ardından en son sürüm etiketini alın:
gh api repos/cli/cli/releases --jq '.[0].tag_name'
Bu komut, GitHub API yanıtını indirir ve yerleşik jq filtresiyle en güncel sürüm etiketini yazdırır.
gh şu senaryolarda özellikle yararlıdır:
- Sürüm notlarını otomatik oluşturmak
- CI'da issue veya pull request açmak
- GitHub Actions sonuçlarını sorgulamak
- Token'ı her
curlkomutuna elle eklemeden API çağrısı yapmak
Araç yalnızca GitHub içindir. GitLab veya Gitea kullanıyorsanız ilgili CLI araçlarını ya da doğrudan curl çağrılarını tercih edin.
Hurl: Git'e kaydedilebilir düz metin HTTP testleri
Hurl, HTTP isteklerini ve beklentilerini düz metin dosyalarında tanımlamanızı sağlar. Bu dosyaları depoya ekleyebilir, code review sürecinden geçirebilir ve CI içinde test olarak çalıştırabilirsiniz.
Hurl Rust ile yazılmıştır, Apache 2.0 lisanslıdır ve github.com/Orange-OpenSource/hurl adresinde sürdürülür.
repo.hurl adlı bir test dosyası oluşturun:
GET https://api.github.com/repos/Orange-OpenSource/hurl
HTTP 200
[Asserts]
jsonpath "$.name" == "hurl"
jsonpath "$.stargazers_count" > 1000
Testi çalıştırın:
hurl --test repo.hurl
Hurl, tüm iddialar geçtiğinde 0, herhangi bir iddia başarısız olduğunda sıfırdan farklı bir çıkış kodu döndürür. Bu davranış CI entegrasyonu için doğrudan uygundur:
hurl --test tests/*.hurl
Hurl ile şu kontrolleri sürüm kontrolüne alabilirsiniz:
- Beklenen HTTP durum kodu
- Yanıt başlıkları
- JSON alanları
- Kimlik doğrulama akışları
- Önceki yanıttan alınan değerlerle zincirlenmiş istekler
Hurl, tam bir yük testi veya sözleşme testi sistemi değildir. Ancak okunabilir HTTP entegrasyon testleri için güçlü ve hafif bir seçenektir. Bu yaklaşım, şartname odaklı API geliştirme iş akışında OpenAPI tanımını doğrulayan test dosyalarıyla iyi çalışır.
cloudflared: Yerel sunucuyu geçici olarak internete açma
Yerel makinenizde çalışan bir API için bazen genel bir HTTPS URL gerekir. Örneğin:
- Webhook geri çağrısını test etmek
- Mobil cihazdan yerel API'ye bağlanmak
- Demo ortamını paylaşmak
- Harici bir servisle entegrasyon denemek
cloudflared, Cloudflare Tunnel istemcisidir. Hızlı tünel modunda hesap gerektirmeden geçici bir *.trycloudflare.com URL'si üretir.
Araç Go ile yazılmıştır, Apache 2.0 lisanslıdır ve github.com/cloudflare/cloudflared adresinde açık kaynak olarak bulunur.
Yerel 3000 portunu paylaşmak için:
cloudflared tunnel --url http://localhost:3000
Komut çalışırken terminalde genel bir HTTPS adresi görünür. Bu adres gelen istekleri localhost:3000 adresine yönlendirir.
Tamamen npm ekosisteminde kalmak isterseniz localtunnel da MIT lisanslı bir alternatiftir:
npx localtunnel --port 3000
Hızlı tünellerin URL'si rastgele ve geçicidir. Kararlı adlandırılmış tüneller için Cloudflare hesabı ve ek yapılandırma gerekir.
git: CLI olarak sürüm kontrolü
API tanımları, Hurl testleri, ortam örnekleri ve otomasyon betikleri bir depoda yaşamalıdır. git, bu araç zincirinin temel katmanıdır.
git, GPLv2 lisanslıdır ve github.com/git/git adresinde açık olarak geliştirilir.
Hurl testlerini commit öncesinde çalıştırmak için basit bir pre-commit hook ekleyin:
echo 'hurl --test *.hurl' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Böylece her git commit işleminden önce Hurl testleri çalışır. Test başarısız olursa commit işlemi durur.
Daha sürdürülebilir bir yapı için hook komutunu proje betiğine taşıyabilirsiniz:
#!/usr/bin/env bash
set -e
hurl --test tests/*.hurl
Ardından hook içinde bu betiği çağırın:
./scripts/test-api.sh
git sürüm kontrolüdür; barındırma katmanı değildir. GitHub, GitLab veya Gitea gibi çözümler ayrı bir mimari seçimdir.
Dürüst bir ara not: Apidog nerede duruyor?
Apidog açık kaynak değildir; bu nedenle yukarıdaki OSS araçlarıyla aynı kategoride değerlendirilmemelidir. Ücretsiz katmanı olan ticari bir üründür.
Açık kaynak araç setinde her iş için ayrı bir bileşen kullanırsınız:
- İstekler için
curlveya HTTPie - JSON dönüşümleri için
jq - HTTP testleri için Hurl
- Sürüm kontrolü için
git - Tüneller için
cloudflared
Apidog, test, mock ve dokümantasyon süreçlerini tek bir çalışma alanında birleştirmeyi hedefler. apidog-cli terminalden test senaryolarını çalıştırmak, uç noktaları ve şemaları yönetmek, mock beklentileri oluşturmak ve OpenAPI içe/dışa aktarmak için kullanılabilir.
Kurulum:
npm install -g apidog-cli
apidog run, tüm kontroller başarılı olduğunda 0, başarısız olduğunda sıfırdan farklı bir kodla çıkar. Bu nedenle CI iş akışlarına entegre edilebilir.
Seçim nettir:
- Tam kaynak erişimi, minimum kilitlenme ve kendi araç zincirinizi kurma özgürlüğü istiyorsanız açık kaynak CLI araçlarını kullanın.
- Daha entegre bir iş akışı istiyorsanız ticari platform seçeneğini değerlendirin.
CLI yolunu kullanmak isterseniz, kurulum rehberi kimlik doğrulama ve ilk komutları adım adım açıklar.
Nasıl seçilir?
Araçları birbirinin alternatifi olarak değil, birlikte çalışan bir araç zinciri olarak düşünün:
| Araç | En iyi kullanım | Kurulum | Açık kaynak mı? | Not |
|---|---|---|---|---|
| curl | Taşınabilir HTTP istekleri ve betikler | Çoğu sistemde yüklü | Evet | CI için güçlü varsayılan |
| HTTPie | Elle hata ayıklama ve API keşfi | pip install httpie |
Evet | Okunabilir, biçimlendirilmiş çıktı |
| jq | JSON yanıtlarını ayrıştırma | Paket yöneticisi / ikili | Evet | İşlem hattı bağlayıcısı |
| gh | GitHub otomasyonu | Paket yöneticisi / ikili | Evet | GitHub'a özeldir |
| Hurl | Sürüm kontrollü HTTP testleri | Tek ikili | Evet | CI uyumlu çıkış kodları |
| cloudflared | Geçici genel tüneller | Tek ikili | Evet | Hızlı tüneller hesap gerektirmez |
| git | Sürüm kontrolü ve hook'lar | Çoğu sistemde yüklü | Evet | Tüm araç zincirinin temeli |
| apidog-cli | Entegre API iş akışı | npm i -g apidog-cli |
Hayır, ücretsiz katman | Test, mock ve dokümantasyon akışları |
Genel yaklaşım:
- Taşınabilirlik gerekiyorsa
curlkullanın. - Yanıtı hızlıca anlamanız gerekiyorsa HTTPie kullanın.
- JSON'dan veri çekmeniz gerekiyorsa
jqekleyin. - HTTP kontrollerini kalıcılaştırmanız gerekiyorsa Hurl dosyaları oluşturun.
- Bu dosyaları
gitile sürüm kontrolüne alın. - Webhook testleri için
cloudflaredile geçici URL açın.
Entegre bir platformun hangi bileşenleri bir araya getirdiğini incelemek için Apidog'un kapsamlı API geliştirme platformu açıklamasına bakabilirsiniz.
Özet
Açık kaynak CLI araçları terminalde güçlüdür çünkü incelenebilir, çatallanabilir ve kendi altyapınızda çalıştırılabilirler.
Başlamak için küçük bir araç zinciri yeterlidir:
curl -s https://api.example.com/users \
| jq '.data[] | {id, email}'
Ardından bunu test edilebilir hâle getirin:
hurl --test tests/users.hurl
Son olarak testleri commit öncesi hook veya CI adımı olarak çalıştırın.
Ajan güdümlü iş akışları kuruyorsanız, yapılandırılmış JSON çıktısı araçlar arasında bağlayıcı katman olur. Bu konu için API geliştirme amaçlı yapay zeka kodlama yardımcıları yazısına göz atabilirsiniz.
Yedi ayrı aracı yönetmek yerine entegre bir yaklaşımı değerlendirmek isterseniz, Apidog'u indirin ve Apidog CLI iş akışını deneyin.





Top comments (0)