DEV Community

Cover image for Ücretsiz Açık Kaynak CLI Geliştirici Araçları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Ücretsiz Açık Kaynak CLI Geliştirici Araçları

Ç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.

Apidog'u bugün deneyin

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:

  1. curl veya HTTPie ile API isteği gönderin.
  2. jq ile yanıtı filtreleyin.
  3. Hurl ile isteği test senaryosuna dönüştürün.
  4. git ile senaryoları sürüm kontrolüne alın.
  5. Gerekirse cloudflared ile 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.

curl logosu

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"}'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

JSON gövdeli bir POST isteği gönderin:

http POST httpbin.org/post name=apidog role=platform
Enter fullscreen mode Exit fullscreen mode

Bu komutta:

  • POST, HTTP metodudur.
  • name=apidog ve role=platform alanları 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}'
Enter fullscreen mode Exit fullscreen mode

Örnek çıktı biçimi:

{
  "name": "jq",
  "stars": 0,
  "license": "MIT"
}
Enter fullscreen mode Exit fullscreen mode

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'
Enter fullscreen mode Exit fullscreen mode

-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
Enter fullscreen mode Exit fullscreen mode

Ardından en son sürüm etiketini alın:

gh api repos/cli/cli/releases --jq '.[0].tag_name'
Enter fullscreen mode Exit fullscreen mode

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 curl komutuna 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
Enter fullscreen mode Exit fullscreen mode

Testi çalıştırın:

hurl --test repo.hurl
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ardından hook içinde bu betiği çağırın:

./scripts/test-api.sh
Enter fullscreen mode Exit fullscreen mode

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 curl veya 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
Enter fullscreen mode Exit fullscreen mode

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 curl kullanın.
  • Yanıtı hızlıca anlamanız gerekiyorsa HTTPie kullanın.
  • JSON'dan veri çekmeniz gerekiyorsa jq ekleyin.
  • HTTP kontrollerini kalıcılaştırmanız gerekiyorsa Hurl dosyaları oluşturun.
  • Bu dosyaları git ile sürüm kontrolüne alın.
  • Webhook testleri için cloudflared ile 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}'
Enter fullscreen mode Exit fullscreen mode

Ardından bunu test edilebilir hâle getirin:

hurl --test tests/users.hurl
Enter fullscreen mode Exit fullscreen mode

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)