DEV Community

Cover image for Geliştirme İçin En İyi Hafif CLI Araçları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Geliştirme İçin En İyi Hafif CLI Araçları

Bir arka uç geliştiricisinin günü kısa geri bildirim döngülerinden oluşur: bir uç noktaya istek gönderin, JSON yanıtını inceleyin, kodu değiştirin ve tekrar deneyin. Ağır bir GUI bu döngüde yükleme ve bağlam değiştirme maliyeti yaratabilir. Hafif CLI araçları ise terminalden hızlıca çalışır, betiklere ve CI işlerine bağlanır ve yalnızca ihtiyaç duyduğunuz işi yapar.

Apidog'u bugün deneyin

Bu yazıda, arka uç geliştirme akışında doğrudan kullanabileceğiniz 10 CLI aracını ele alıyoruz: HTTP isteği gönderme, JSON ayrıştırma, yerel port açığa çıkarma, HTTPS sertifikası üretme, dosya değişikliklerini izleme, bağımlı servisleri başlatma ve API testlerini CI'da çalıştırma. Daha geniş bağlam için API geliştirme rehberi ile başlayabilirsiniz.

Bir CLI aracını geliştirme için “hafif” yapan nedir?

Bir aracın hafif olması, yalnızca az özelliğe sahip olması anlamına gelmez. Asıl ölçüt; kurulum, başlangıç ve otomasyon sürtünmesidir.

Bir aracı kitinize eklemeden önce şu dört noktayı kontrol edin:

  • Kurulum biçimi: Tek bir statik ikili dosya veya küçük bir npx paketi, ek çalışma zamanı ve karmaşık kurulum gerektiren araçlardan daha pratiktir.
  • Başlangıç hızı: Araç, düzenleyicinize dönmeden önce hazır olmalıdır. Bu nedenle Rust ve Go ile yazılmış ikili dosyalar sık kullanılan döngülerde avantaj sağlar.
  • İlk sonuç için gereken yapılandırma: Yararlı varsayılanlarla çalışabilen araçlar daha hızlı değer üretir.
  • Birleştirilebilirlik: stdin'den okuyup stdout'a yazması, anlamlı çıkış kodu döndürmesi ve pipe ile başka araçlara aktarılabilmesi önemlidir.

Aşağıdaki araçlar, küçük ve tek amaçlı araçlardan daha kapsamlı çözümlere doğru sıralanmıştır. curl çoğu sistemde zaten bulunur; diğerlerini birkaç dakikada kurabilirsiniz.

curl

curl, HTTP uç noktalarını test etmek ve betiklemek için temel araçtır. Neredeyse her ortamda bulunur ve CI sağlık kontrolleri için güvenilir bir varsayılandır.

Bir GitHub issue oluşturma isteği:

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

CI kullanımında komutu daha güvenilir hale getirmek için şunları ekleyin:

curl --fail --silent --show-error \
  -o response.json \
  -w '%{http_code}\n' \
  https://example.com/health
Enter fullscreen mode Exit fullscreen mode
  • --fail: 4xx ve 5xx yanıtlarında sıfır olmayan çıkış kodu döndürür.
  • -s veya --silent: ilerleme çıktısını kapatır.
  • -i: yanıt başlıklarını da gösterir.
  • -w '%{http_code}': HTTP durum kodunu yazdırır.

En iyisi: Betikler, CI sağlık kontrolleri ve ekip arkadaşlarıyla paylaşılabilir HTTP istekleri.

Sınırlama: Bayrak sözdizimi yoğun olabilir; JSON gövdelerini elle yazmanız gerekir.

HTTPie

HTTPie (http), etkileşimli API keşfi için curl'e daha okunabilir bir alternatif sunar. JSON gövdeleri ve biçimlendirilmiş çıktı varsayılan olarak desteklenir.

http POST httpbin.org/post name=apidog role=api-tool active:=true
Enter fullscreen mode Exit fullscreen mode

Bu komut aşağıdaki JSON gövdesini gönderir:

{
  "name": "apidog",
  "role": "api-tool",
  "active": true
}
Enter fullscreen mode Exit fullscreen mode

Temel sözdizimi:

  • name=value: dize değeri gönderir.
  • active:=true: ham JSON değeri gönderir.
  • Authorization:Bearer_TOKEN: HTTP başlığı ekler.

Örnek:

http GET https://api.example.com/users \
  Authorization:"Bearer $TOKEN"
Enter fullscreen mode Exit fullscreen mode

En iyisi: İsteklerin okunabilir olmasının önemli olduğu manuel API keşfi.

Sınırlama: Python paketi olduğu için yerel ikili dosyalara göre soğuk başlangıcı daha yavaş olabilir.

xh

xh, HTTPie sözdizimini Rust ile yazılmış tek bir ikili dosyada sunar. HTTPie ergonomisini korurken daha hızlı başlatılabilir ve ek Python çalışma zamanı gerektirmez.

xh POST httpbin.org/post name=apidog age:=24
Enter fullscreen mode Exit fullscreen mode

HTTPie ile aynı alışkanlıkları kullanabilirsiniz:

xh GET https://api.example.com/users Authorization:"Bearer $TOKEN"
Enter fullscreen mode Exit fullscreen mode

xh, ince CI imajlarında ve konteynerlerde özellikle kullanışlıdır. Tek dosyalık ikili yapısı, bağımlılık yönetimini azaltır.

En iyisi: HTTPie sözdizimini sevip yerel hız, konteyner uyumluluğu ve düşük bağımlılık isteyen geliştiriciler.

Sınırlama: HTTPie ekosistemindeki tüm eklentileri kapsamayabilir.

jq

jq, JSON API yanıtlarını terminalde filtrelemek, dönüştürmek ve başka komutlara aktarmak için kullanılır. HTTP istemcinizin çıktısını anlamlı alanlara indirger.

curl -s https://api.github.com/repos/stedolan/jq | jq '.stargazers_count'
Enter fullscreen mode Exit fullscreen mode

Bir listedeki tüm isimleri almak için:

curl -s https://api.example.com/items | jq '.items[] | .name'
Enter fullscreen mode Exit fullscreen mode

Yalnızca aktif kayıtları filtrelemek için:

curl -s https://api.example.com/users | jq '.[] | select(.active)'
Enter fullscreen mode Exit fullscreen mode

Bir shell değişkenine ham metin olarak değer almak için -r kullanın:

API_URL=$(curl -s https://api.example.com/config | jq -r '.apiUrl')
Enter fullscreen mode Exit fullscreen mode

En iyisi: Betiklerde ve CI işlerinde API yanıtlarından alan ayıklama ve JSON dönüştürme.

Sınırlama: Karmaşık sorgular için sözdizimini öğrenmek gerekir.

gh (GitHub CLI)

gh, GitHub işlemlerini terminalden yönetmenizi sağlar. Bir kez kimlik doğrulaması yaptıktan sonra PR, issue, release, Actions ve API çağrılarını betikleyebilirsiniz.

Önce giriş yapın:

gh auth login
Enter fullscreen mode Exit fullscreen mode

Mevcut daldan pull request oluşturun:

gh pr create --title "Add rate limiting" --body "Closes #42" --base main
Enter fullscreen mode Exit fullscreen mode

CI kontrollerini izleyin:

gh pr checks
Enter fullscreen mode Exit fullscreen mode

Bir GitHub Actions çalışmasını canlı takip edin:

gh run watch
Enter fullscreen mode Exit fullscreen mode

Sarmalanmış komutların kapsamadığı bir API uç noktasını çağırın:

gh api repos/OWNER/REPO/issues
Enter fullscreen mode Exit fullscreen mode

En iyisi: GitHub PR'larını, Actions işlerini, sürümleri ve GitHub API çağrılarını otomatikleştirme.

Sınırlama: Yalnızca GitHub için çalışır; GitLab veya Bitbucket akışlarına doğrudan çözüm değildir.

ngrok

ngrok, yerel bir portu güvenli bir tünel aracılığıyla genel URL'ye açar. Webhook geliştirirken veya yerel sunucunuzu başka birine göstermeniz gerektiğinde kullanışlıdır.

ngrok http 8080
Enter fullscreen mode Exit fullscreen mode

Bu komut, yerel localhost:8080 servisinizi genel bir https:// URL üzerinden erişilebilir hale getirir.

Webhook isteklerini incelemek için ngrok denetleyicisini açın:

http://127.0.0.1:4040
Enter fullscreen mode Exit fullscreen mode

Buradan gelen istekleri görebilir ve yeniden oynatabilirsiniz. Özellikle ödeme sağlayıcısı, Git webhook'u veya üçüncü taraf callback entegrasyonlarında hata ayıklamayı hızlandırır.

En iyisi: Webhook geliştirme, yerel sunucu paylaşımı ve üçüncü taraf callback testleri.

Sınırlama: Ücretsiz planda URL oturumlar arasında değişebilir ve hız sınırları bulunabilir.

mkcert

mkcert, yerelde güvenilen HTTPS sertifikaları üretir. OAuth yönlendirmeleri, güvenli çerezler veya yalnızca HTTPS üzerinde çalışan tarayıcı özelliklerini test etmek için kullanın.

Önce yerel sertifika yetkilisini kurun:

mkcert -install
Enter fullscreen mode Exit fullscreen mode

Ardından gerekli host adları için sertifika oluşturun:

mkcert localhost 127.0.0.1 myapp.local
Enter fullscreen mode Exit fullscreen mode

Bu komut sertifika ve anahtar dosyaları üretir. Bunları geliştirme sunucunuza veya ters proxy yapılandırmanıza verin.

Örneğin Nginx ile:

server {
  listen 443 ssl;
  server_name myapp.local;

  ssl_certificate /path/to/myapp.local.pem;
  ssl_certificate_key /path/to/myapp.local-key.pem;

  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}
Enter fullscreen mode Exit fullscreen mode

En iyisi: Yerel geliştirme ortamında üretime yakın, güvenilir HTTPS kullanımı.

Sınırlama: Sadece geliştirme içindir. mkcert sertifikalarını üretimde kullanmayın ve yerel kök CA anahtarını koruyun.

watchexec

watchexec, dosyalar değiştiğinde belirlediğiniz komutu yeniden çalıştırır. Test döngüsünü veya yerel sunucu yeniden başlatma sürecini hızlandırır.

Python testlerini her .py değişikliğinde çalıştırmak için:

watchexec -e py -r 'pytest tests/'
Enter fullscreen mode Exit fullscreen mode
  • -e py: yalnızca Python dosyalarını izler.
  • -r: önceki uzun süreli süreci sonlandırıp yeniden başlatır.

Go sunucusunu izlemek için:

watchexec -r 'go run .'
Enter fullscreen mode Exit fullscreen mode

JavaScript testlerini çalıştırmak için:

watchexec 'npm test'
Enter fullscreen mode Exit fullscreen mode

Varsayılan olarak .gitignore kurallarına uyar; bu nedenle node_modules, derleme çıktıları veya geçici dosyalar gereksiz tetikleme oluşturmaz.

En iyisi: Çerçeveye bağlı kalmadan test veya sunucu için düzenle-çalıştır döngüsü kurma.

Sınırlama: Sıcak modül yeniden yüklemesi yapmaz ve süreç içi durumu korumaz.

Docker CLI

Docker CLI, diğer araçlardan daha ağırdır; ancak Postgres, Redis veya başka bir bağımlı servisi tek kullanımlık olarak çalıştırmak için çok pratiktir.

Yerel Postgres başlatın:

docker run --rm -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:16
Enter fullscreen mode Exit fullscreen mode

Bu komutta:

  • --rm: konteyner durduğunda kaldırılır.
  • -e: ortam değişkeni tanımlar.
  • -p: konteyner portunu ana bilgisayara eşler.

Uygulamanız artık şu bağlantı bilgilerini kullanabilir:

host=localhost
port=5432
user=postgres
password=dev
Enter fullscreen mode Exit fullscreen mode

Redis için aynı deseni kullanın:

docker run --rm -p 6379:6379 redis:7
Enter fullscreen mode Exit fullscreen mode

Entegrasyon testleri için servisi arka planda başlatabilirsiniz:

docker run -d --rm \
  --name local-postgres \
  -e POSTGRES_PASSWORD=dev \
  -p 5432:5432 \
  postgres:16
Enter fullscreen mode Exit fullscreen mode

En iyisi: Yerel geliştirme ve entegrasyon testleri için temiz, tekrar üretilebilir destek servisleri.

Sınırlama: Docker daemon gerektirir; disk ve bellek tüketimi diğer CLI araçlarına göre daha yüksektir.

apidog-cli

Terminalden API çalışması yaparken yalnızca HTTP isteği göndermek yeterli olmayabilir. Uç noktaları, şemaları, ortamları ve kaydedilmiş test senaryolarını aynı API projesiyle yönetmek isteyebilirsiniz. Apidog, bu akışı terminale taşıyan apidog-cli aracını sunar.

Kurulum ve kimlik doğrulama:

npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
Enter fullscreen mode Exit fullscreen mode

Kaydedilmiş bir test senaryosunu belirli bir ortamda çalıştırın:

apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

apidog run, test adımlarının sonuçlarını terminalde gösterir. Başarılı çalışmada 0, başarısız doğrulamada sıfır olmayan çıkış kodu döndürdüğü için CI adımına doğrudan eklenebilir.

Örnek CI adımı:

apidog run -t "$SCENARIO_ID" -e "$ENV_ID" -r cli
Enter fullscreen mode Exit fullscreen mode

CLI ile şu kaynakları da yönetebilirsiniz:

  • endpoint ve schema: API tasarımı
  • import ve export: OpenAPI, Swagger ve Postman aktarımı
  • mock: sahte beklenti ve mock yapılandırması
  • environment ve variables: ortam ve değişken yönetimi

Çıktı, agentHints.nextSteps içeren yapılandırılmış JSON sağlayabilir. Bu yapı, API geliştirme yapan AI kodlama asistanları ile çalışan akışlar için de uygundur.

Komutların tamamı için Apidog CLI kapsamlı rehberine, ilk kurulum için ise Apidog CLI kurulum rehberine bakın.

En iyisi: API test senaryolarını CI'da çalıştırma ve API proje kaynaklarını betiklerle yönetme. Özellikle belirtim-öncelikli API geliştirme iş akışlarında faydalıdır.

Sınırlama: Apidog açık kaynak değildir ve ücretsiz katmanı olan ticari bir üründür. Hafif bileşen apidog-cli aracıdır; tam Apidog platformu aynı projenin GUI katmanını içerir.

Nasıl seçilir?

Bu araçların çoğu birbirinin alternatifi değil, tamamlayıcısıdır. Pratik bir arka uç geliştirme seti genellikle bir HTTP istemcisi, jq, tünel aracı, dosya izleyici ve test çalıştırıcısından oluşur.

Araç En iyisi Kurulum Açık kaynak mı?
curl Betiklenmiş istekler, CI sağlık kontrolleri Önceden yüklenmiş Evet (curl lisansı)
HTTPie Okunabilir etkileşimli istekler pip install httpie Evet (BSD)
xh HTTPie hissi, yerel hız cargo install xh / ikili Evet (MIT)
jq JSON yanıtlarını filtreleme brew install jq / ikili Evet (MIT)
gh GitHub PR'larını ve CI'yı betikleme brew install gh / ikili Evet (MIT)
ngrok localhost'u açığa çıkarma, webhook'lar İkiliyi indir Hayır (freemium)
mkcert Güvenilir yerel HTTPS sertifikaları brew install mkcert / ikili Evet (BSD)
watchexec Dosya değişiminde yeniden çalıştırma cargo install watchexec-cli Evet (Apache-2.0)
Docker CLI Tek kullanımlık destek hizmetleri Docker kurulumu Evet (Apache-2.0)
apidog-cli Test senaryoları çalıştırma, proje yönetimi npm install -g apidog-cli Hayır (freemium)

İhtiyacınıza göre seçim yapın:

  • HTTP isteği göndermek: Etkileşimli kullanım için xh veya HTTPie; betikler için curl.
  • JSON yanıtını işlemek: jq.
  • Yerel portu dışarı açmak: ngrok.
  • Yerelde HTTPS kullanmak: mkcert.
  • Dosya değişince test veya sunucu çalıştırmak: watchexec.
  • Postgres, Redis gibi servisleri başlatmak: Docker CLI.
  • API testlerini ve proje kaynaklarını yönetmek: apidog-cli.

Sonuç

İyi bir hafif CLI kiti, her biri tek işi iyi yapan ve birbirine bağlanabilen araçlardan oluşur. curl ve xh istek gönderir, jq yanıtları işler, ngrok ve mkcert yerel erişim senaryolarını çözer, watchexec geri bildirim döngüsünü hızlandırır, Docker ise tek kullanımlık altyapı sağlar.

apidog-cli, bu terminal akışını API projenizdeki uç noktalar, ortamlar ve test senaryolarıyla birleştirir. Bir proje oluşturmak için Apidog'u indirin; ardından testleri ve proje kaynaklarını CI hattınızdan CLI ile yönetin.

Top comments (0)