Httpie, komut satırından API test etmek için tasarlanmış, insan tarafından okunabilir sözdizimi ve renkli çıktıya sahip bir konsol HTTP istemcisidir. Araç sezgisel bir sözdizimi kullanır: http GET https://api.example.com/users — başlıklar ve istek gövdesi için bayrak belirtmeye gerek yoktur. Httpie CLI Documentation (2026)'ya göre bu yardımcı program varsayılan olarak JSON, oturumlar, kimlik doğrulama ve eklentileri destekler.
Önemli noktalar
Httpie (veya HTTPie), cURL'ye kıyasla HTTP istekleri göndermeyi basitleştiren Python ile yazılmış bir komut satırı yardımcı programıdır. Ana fark, doğal dile yakın bir sözdizimidir: bağımsız değişkenler boşluklarla ayrılır, başlıklar iki nokta üst üste ile belirtilir ve JSON verileri tırnak işaretlerini kaçışlamadan eşittir işaretiyle belirtilir.
cURL'de aynı POST isteği en az üç bayrak (-X, -H, -d) ve elle JSON kaçışlama gerektirir. Httpie aynı işi bayraklar olmadan üç kelimeyle yapar, otomatik olarak Content-Type: application/json ayarlar ve çıktıyı vurgular. Yanıt varsayılan olarak girinti ve sözdizimi vurgulamasıyla biçimlendirilir.
| İşlem | cURL | Httpie |
|---|---|---|
| GET isteği | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| Başlık | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie ana parametreler için bayraksız tek bir komut satırı biçimi kullanır. HTTP yöntemi ilk bağımsız değişken (GET, POST, PUT, DELETE, PATCH), URL ikinci olarak belirtilir. Yöntem atlanırsa, Httpie otomatik olarak GET'i (gövdesiz istekler için) veya POST'u (gövdeyle birlikte) seçer.
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie veri türünü otomatik olarak belirler: key=value geçilirse gövde JSON olarak gönderilir. --raw ile ham metin geçilirse düz metin olarak gönderilir. form-data biçimi -f bayrağıyla etkinleştirilir.
# JSON verileri ve bir başlıkla POST isteği
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Vurgulama ve Pretty-print ile yanıt
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Httpie'de JSON serileştirmesi otomatik olarak çalışır: key=value olarak geçilen değer JSON'ın bir dize alanı olur. Sayılar ve boole değerleri için key:=value kullanılır. İç içe nesneler nokta gösterimiyle oluşturulur: address.city=Moscow.
Httpie, key@path sözdizimiyle dosya ve veri yüklemek için multipart/form-data biçimini destekler. Bir dosyanın içeriğini isteğin ham gövdesi olarak göndermek gerekiyorsa giriş yönlendirmesi kullanılır: http POST example.com < file.json. Yanıtı bir dosyaya indirmek için -d (download) bayrağı kullanılır.
# Bir dosyadan JSON gönderme
http POST https://api.example.com/users < user.json
# multipart ile dosya yükleme
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Httpie'deki oturumlar istekler arasında çerezler, başlıklar ve kimlik doğrulama parametreleri gibi durumu korur. Bir oturum --session=name bayrağıyla oluşturulur. Oturum verileri ~/.httpie/sessions/ klasöründeki bir JSON dosyasında saklanır. :readonly sonekine sahip bir oturum istekten sonra güncellenmez.
Önce kimlik bilgileriyle /auth/login'e bir POST isteği gönderilir — sunucu bir oturum çerezi döndürür. Aynı oturum içindeki korumalı uç noktalara yapılan sonraki tüm istekler, kaydedilen çerezi otomatik olarak gönderir; bu da mobil uygulamanın API'sini test ederken tarayıcının davranışını simüle eder.
# 1. Adım: kimlik doğrulama
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# 2. Adım: kaydedilmiş oturum çereziyle istek
http --session=app-test GET https://api.example.com/users/me
Httpie, bayraklar aracılığıyla tüm ana kimlik doğrulama türlerini destekler: Basic Auth için -a user:pass, Digest için --auth-type=digest, Bearer Token için --auth-type=bearer TOKEN. Özel başlıklar HeaderName:value olarak komutun herhangi bir yerine eklenir.
OAuth 2.0 kullanan bir API'yi test etmek için belirteç Authorization başlığı aracılığıyla iletilir. Httpie belirtecin yaşam döngüsünü çekirdek düzeyinde yönetmez — bunu harici bir betik yapar. http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource komutu, belirteçle başlığı açıkça belirtmeye eşdeğerdir.
Httpie, sıfır bağımlılık (Python dışında) ve okunabilir çıktı sayesinde CI/CD boru hatları için idealdir. Komutlar, ek ayrıştırma olmadan günlüklerde kolayca okunur. Araç pip ile kurulur ve Alpine, Ubuntu ile Jenkins ve GitLab'ın resmi CI görüntüleri dahil tüm popüler Docker görüntülerinde bulunur. Bu, Httpie'yi REST API'lerini ve mikro hizmetleri otomatik olarak test etmek için uygun bir seçim haline getirir.
Tipik bir senaryo, bir uygulamanın dağıtımından sonra API durumunu kontrol etmektir. Httpie, health uç noktasına bir istek gönderir ve yanıt beklenenle eşleşmezse sıfır olmayan bir kodla sona erer. --check-status bayrağı, durum kodu 300'den büyük veya eşit olduğunda otomatik olarak bir hata döndürür.
# Dağıtım betiğinde health check
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API sağlıklı" || \
echo "API kontrolü başarısız"
Httpie, Package Index sistemi aracılığıyla eklentileri destekler. Eklentiler yeni kimlik doğrulama türleri, serileştirme biçimleri ve aktarımlar ekler. Kurulum pip ile yapılır: pip install httpie-plugin-name. Kurulumdan sonra eklenti, Httpie'nin bir sonraki başlatılışında otomatik olarak etkinleştirilir.
Httpie, --pretty=format seçeneğiyle jq benzeri filtrelemeyi ve --print ile cURL uyumlu çıktıyı destekler. --quiet bayrağı, CI günlüklerinde daha iyi okunabilirlik için renkli çıktıyı kapatır. Yanıtı programlı olarak işlemek için başlıklar olmadan yalnızca yanıt gövdesini çıkaran --body bayrağını kullanın.
# jq ile JSON yanıtından alan çıkarma
http GET https://api.example.com/users/1 | jq '.name'
# Yalnızca yanıt gövdesini çıkarma (başlıklar olmadan)
http --body GET https://api.example.com/health
# Bir dosyadan farklı verilerle toplu gönderme
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie --print bayrağıyla çıktı biçimlerini destekler: H (istek başlıkları), B (istek gövdesi), h (yanıt başlıkları), b (yanıt gövdesi). --print=hb kombinasyonu yalnızca yanıt başlıklarını ve gövdesini çıkarır. --pretty=all bayrağı girintili renkli biçimlendirmeyi etkinleştirir.
Httpie, HTTPIE_COLORS değişkeni aracılığıyla özelleştirmeyi destekler. URL, başlıklar, JSON ve durum kodları için renkler yapılandırın. Farklı terminaller için yerleşik temalar mevcuttur: autumn, borland, fruity, monokai, native, tango.
Programlı işleme için ham JSON döndüren --body --pretty=none kullanın. Kompakt çıktı, betiklerde API testini otomatikleştirirken jq, sed ve diğer ayrıştırıcılara iletmek için kullanışlıdır.
Httpie --print bayrağıyla birden çok çıktı biçimini destekler: H (istek başlıkları), B (istek gövdesi), h (yanıt başlıkları), b (yanıt gövdesi). --print=hb kombinasyonu, bağlantının meta bilgileri hariç yalnızca yanıt başlıklarını ve gövdesini çıkarır. --pretty=all bayrağı okunabilirlik için girintili renkli biçimlendirmeyi etkinleştirir.
Httpie, HTTPIE_COLORS ortam değişkeni aracılığıyla renk özelleştirmesini destekler. URL, başlıklar, JSON anahtarları ve yanıt durum kodları için renkler yapılandırabilirsiniz. Farklı terminal türleri ve kişisel tercihler için yerleşik temalar mevcuttur: autumn, borland, fruity, monokai, native ve tango.
Çıktının programlı işlenmesi için renkler ve girintiler olmadan ham JSON döndüren --body --pretty=none bayrak kombinasyonunu kullanın. Kompakt çıktı, kabuk betiklerinde REST API testini otomatikleştirirken jq, sed ve diğer konsol ayrıştırıcılarına iletmek için kullanışlıdır.
Sık sorulan sorular
Httpie, temel işlemler için bayraksız daha okunabilir bir sözdizimi, otomatik JSON serileştirmesi, yanıtın renkli vurgulanması ve yerleşik oturum desteği sunar. cURL, düşük seviyeli işlemler için vazgeçilmez olmaya devam eder: FTP, SMTP ve standart olmayan protokollerle çalışmak.
-f bayrağını (veya --form) kullanın: http -f POST example.com name=John file@~/photo.jpg. Httpie otomatik olarak Content-Type: multipart/form-data ayarlar. -f bayrağı olmadan veriler application/json olarak gönderilir.
Evet, Httpie HTTPS destekler. Kendinden imzalı sertifikalar için --verify=no bayrağını kullanın. Özel bir CA dosyası belirtmek için: --verify=/path/to/cert.pem. Varsayılan olarak sertifika doğrulaması etkindir.
Hayır, Httpie WebSocket desteklemez ve yalnızca HTTP/HTTPS protokolü içindir. WebSocket için websocat veya wscat kullanın. Httpie REST, GraphQL ve dosya işlemlerine odaklanır.
-d (download) bayrağını kullanın: http -d GET https://example.com/file.zip. Httpie, dosyayı Content-Disposition başlığından veya URL'den gelen özgün adla kaydeder. Özel bir ad için -o output.zip belirtin.
Özet
http [method] URL [key=value] [Header:value] çoğu istek için bayrak gerektirmez.Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun