Httpie: nedir, komut satırı için bir HTTP istemcisi

Yazar: IT Sectr Yayınlanma: 2026-05-08 Okuma süresi: 8 dk

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, okunabilir sözdizimi, renkli vurgulama ve yerleşik JSON serileştirmesiyle cURL'nin modern bir alternatifidir.
  • Sözdizimi istek şu şemaya göre oluşturulur: http [method] URL [header:value] [key=value] — ek bayraklar olmadan.
  • Varsayılan olarak JSON — istek gövdesi bir JSON nesnesi olarak kabul edilir ve Content-Type başlığı otomatik olarak ayarlanır.
  • Oturumlar istekler arasında çerezleri ve başlıkları korur; bu da kimliği doğrulanmış uç noktaları test etmek için uygundur.
  • Eklentiler ek biçimler, kimlik doğrulama türleri ve özel aktarım destekleriyle Httpie'yi genişletir.

Httpie nedir ve cURL'den nasıl farklıdır

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 ve Httpie karşılaştırması

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.

İşlemcURLHttpie
GET isteğicurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
Başlıkcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Httpie'de istek sözdizimi

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.

Bağımsız değişken türleri

  • Header:Value — iki nokta üst üsteli istek başlıkları; iki nokta üst üsteden sonra boşluk yok: Authorization:"Bearer token".
  • key=value — istek gövdesindeki JSON nesne alanları: name=John age=30.
  • key:=value — dize olmayan JSON değerleri (sayılar, boole'ler, diziler): active:=true tags:=["dev","test"].
  • key@file — bir dosyadan değer yükleme: 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.

bash
# 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"
}

JSON ve dosyalarla çalışma

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.

Dosyaları ve ikili verileri yükleme

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.

bash
# 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"

Oturumları ve çerezleri yönetme

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.

Oturum testi örneği

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

bash
# 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

Kimlik doğrulama ve başlıklar

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 ve Bearer Token

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'nin CI/CD betiklerinde kullanımı

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.

Dağıtımda health uç noktasını kontrol etme

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.

bash
# 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'nin gelişmiş özellikleri ve eklentileri

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.

Popüler Httpie eklentileri

  • httpie-jwt-auth — refresh token mekanizmasıyla JWT belirteçlerinin otomatik olarak alınması ve yenilenmesi.
  • httpie-oauth — belirteç için otomatik kod değişimiyle OAuth 2.0 Client Credentials ve Authorization Code akışı desteği.
  • httpie-editor — göndermeden önce istek gövdesini bir metin düzenleyicide (vim, nano, VS Code) açar.
  • httpie-image — yanıttaki görüntüleri doğrudan terminalde gösterir (kitty veya iTerm2 gerektirir).

Betik oluşturma ve çıktı ayrıştırma

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.

bash
# 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

Çıktı biçimleri ve özelleştirme

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.

Özel renk şemaları

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.

JSON biçiminde çıktı

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.

Çıktı biçimleri ve görünüm özelleştirmesi

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.

Özel renk şemaları

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.

Biçimlendirme olmadan JSON biçiminde çıktı

Çı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 standart cURL'den neden daha iyidir?

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.

Httpie ile form-data nasıl gönderilir?

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

Httpie HTTPS ve sertifikaları destekliyor mu?

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.

Httpie WebSocket için kullanılabilir mi?

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.

Httpie ile bir yanıt dosyaya nasıl kaydedilir?

-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

  • Httpie — sezgisel sözdizimi, varsayılan JSON ve renkli çıktıya sahip bir konsol HTTP istemcisi.
  • Temel sözdizimi http [method] URL [key=value] [Header:value] çoğu istek için bayrak gerektirmez.
  • JSON serileştirmesi otomatiktir: key=value bir JSON alanı olur, sayılar ve boole değerleri için key:=value.
  • Oturumlar, kimliği doğrulanmış uç noktaları test etmek için istekler arasında çerezleri ve başlıkları korur.
  • Kimlik doğrulama --auth-type bayrağıyla Basic, Digest, Bearer ve özel şemaları destekler.
  • CI/CD entegrasyonu --check-status ve sıfır bağımlılıkla Httpie'yi dağıtım betikleri için uygun hale getirir.
  • Dosya yükleme -f bayrağı ve key@file sözdizimiyle multipart form-data aracılığıyla.

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.

Projeyi tartış

Ayrıca okuyun