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.
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
npxpaketi, 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"}'
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
-
--fail: 4xx ve 5xx yanıtlarında sıfır olmayan çıkış kodu döndürür. -
-sveya--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
Bu komut aşağıdaki JSON gövdesini gönderir:
{
"name": "apidog",
"role": "api-tool",
"active": true
}
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"
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
HTTPie ile aynı alışkanlıkları kullanabilirsiniz:
xh GET https://api.example.com/users Authorization:"Bearer $TOKEN"
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'
Bir listedeki tüm isimleri almak için:
curl -s https://api.example.com/items | jq '.items[] | .name'
Yalnızca aktif kayıtları filtrelemek için:
curl -s https://api.example.com/users | jq '.[] | select(.active)'
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')
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
Mevcut daldan pull request oluşturun:
gh pr create --title "Add rate limiting" --body "Closes #42" --base main
CI kontrollerini izleyin:
gh pr checks
Bir GitHub Actions çalışmasını canlı takip edin:
gh run watch
Sarmalanmış komutların kapsamadığı bir API uç noktasını çağırın:
gh api repos/OWNER/REPO/issues
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
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
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
Ardından gerekli host adları için sertifika oluşturun:
mkcert localhost 127.0.0.1 myapp.local
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;
}
}
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/'
-
-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 .'
JavaScript testlerini çalıştırmak için:
watchexec 'npm test'
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
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
Redis için aynı deseni kullanın:
docker run --rm -p 6379:6379 redis:7
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
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>
Kaydedilmiş bir test senaryosunu belirli bir ortamda çalıştırın:
apidog run -t <scenario_id> -e <env_id> -r cli
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
CLI ile şu kaynakları da yönetebilirsiniz:
-
endpointveschema: API tasarımı -
importveexport: OpenAPI, Swagger ve Postman aktarımı -
mock: sahte beklenti ve mock yapılandırması -
environmentvevariables: 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
xhveya HTTPie; betikler içincurl. -
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)