Httpie: bu nədir, komanda sətri üçün HTTP-müştərisi

Müəllif: IT Sectr Dərc olunub: 2026-05-08 Oxuma vaxtı: 8 dəq

Httpie — insan tərəfindən oxuna bilən sintaksisə və rəngli çıxışa malik, API-ni komanda sətrindən sınaqdan keçirmək üçün nəzərdə tutulmuş konsol HTTP-müştərisi. Alət intuitiv sintaksisdən istifadə edir: http GET https://api.example.com/users başlıqlar və sorğu gövdəsi üçün bayraqlar göstərməyə ehtiyac olmadan. Httpie CLI Documentation (2026)-ya görə, util standart olaraq JSON, sessiyalar, autentifikasiya və plaginləri dəstəkləyir.

Əsas məqamlar

  • Httpie — oxuna bilən sintaksis, rəngli vurğulama və daxili JSON seriyalaşdırma ilə cURL-un müasir əvəzedicisi.
  • Sintaksis: sorğu http [method] URL [header:value] [key=value] sxeminə əsasən əlavə bayraqlar olmadan qurulur.
  • Standart JSON — sorğu gövdəsi JSON obyekti kimi qəbul edilir, Content-Type başlığı avtomatik olaraq daxil edilir.
  • Sessiyalar sorğular arasında kukiləri və başlıqları saxlayır, bu da autentifikasiyalı endpoint-lərin sınağı üçün əlverişlidir.
  • Plaginlər Httpie-ni əlavə formatlar, autentifikasiya növləri və fərdi nəqliyyat vasitələri ilə genişləndirir.

Httpie nədir və cURL-dan nə ilə fərqlənir

Httpie (və ya HTTPie) — Python dilində yazılmış konsol utilidir, HTTP sorğularının göndərilməsini cURL ilə müqayisədə sadələşdirir. Əsas fərq təbii dilə yaxın sintaksisdir: arqumentlər boşluqlarla ayrılır, başlıqlar iki nöqtə ilə, JSON məlumatları isə bərabərlik işarəsi ilə, dırnaqları ekranlaşdırmadan göstərilir.

cURL və Httpie-nin müqayisəsi

Eyni POST sorğusu cURL-da ən azı üç bayraq (-X, -H, -d) və JSON-un əl ilə ekranlaşdırılmasını tələb edir. Httpie eyni işi bayraqlar olmadan üç sözlə görür, Content-Type: application/json-u avtomatik təyin edir və çıxışı rəngləyir. Cavab standart olaraq abzaslarla və sintaksis vurğulaması ilə formatlaşdırılır.

ƏməliyyatcURLHttpie
GET sorğusucurl 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ıqcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Httpie-də sorğu sintaksisi

Httpie əsas parametrlər üçün bayraqlar olmadan vahid komanda sətri formatından istifadə edir. HTTP metodu birinci arqument (GET, POST, PUT, DELETE, PATCH), URL isə ikinci kimi göstərilir. Metod buraxılarsa, Httpie avtomatik olaraq GET (gövdəsiz sorğular üçün) və ya POST (gövdəli) seçir.

Arqument növləri

  • Header:Value — iki nöqtə ilə sorğu başlıqları, iki nöqtədən sonra boşluq yoxdur: Authorization:"Bearer token".
  • key=value — sorğu gövdəsində JSON obyektinin sahələri: name=John age=30.
  • key:=value — sətir olmayan JSON dəyərləri (ədədlər, məntiqi dəyərlər, massivlər): active:=true tags:=["dev","test"].
  • key@file — dəyərin fayldan yüklənməsi: avatar@~/photo.jpg.

Httpie məlumat növünü avtomatik müəyyən edir: key=value ötürülərsə, gövdə JSON kimi göndərilir. --raw vasitəsilə xam mətn ötürülərsə — düz mətn kimi. form-data formatı -f bayrağı ilə aktivləşdirilir.

bash
# JSON məlumatları və başlığı ilə POST sorğusu
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Vurğulama və Pretty-print ilə cavab
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

JSON və fayllarla iş

JSON seriyalaşdırma Httpie-də avtomatik işləyir: key=value kimi ötürülən dəyər JSON-un sətir sahəsinə çevrilir. Ədədlər və məntiqi dəyərlər üçün key:=value istifadə olunur. İç-içə obyektlər nöqtə notasiyası ilə yaradılır: address.city=Moscow.

Faylların və binar məlumatların yüklənməsi

Httpie faylları və məlumatları key@path sintaksisi ilə yükləmək üçün multipart/form-data formatını dəstəkləyir. Faylın məzmununu sorğunun xam gövdəsi kimi göndərmək lazımdırsa, giriş yönləndirməsi istifadə olunur: http POST example.com < file.json. Cavabı fayla endirmək üçün -d (download) bayrağı tətbiq olunur.

bash
# Fayldan JSON göndərilməsi
http POST https://api.example.com/users < user.json

# Faylın multipart vasitəsilə yüklənməsi
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Sessiyaların və kukilərin idarə edilməsi

Sessiyalar Httpie-də sorğular arasında vəziyyəti saxlayır: kukilər, başlıqlar və autentifikasiya parametrləri. Sessiya --session=name bayrağı ilə yaradılır. Sessiya məlumatları ~/.httpie/sessions/ qovluğunda JSON faylında saxlanılır. :readonly sonluqlu sessiya sorğudan sonra yenilənmir.

Sessiya testinin nümunəsi

Əvvəlcə POST giriş məlumatları ilə /auth/login ünvanına göndərilir — server sessiya kukisini qaytarır. Eyni sessiya daxilində qorunan endpoint-lərə edilən bütün sonrakı sorğular avtomatik olaraq saxlanılmış kukini göndərir, bu da mobil tətbiqin API-ni sınaqdan keçirərkən brauzerin davranışını simulyasiya edir.

bash
# Addım 1: autentifikasiya
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Addım 2: saxlanılmış sessiya kukisi ilə sorğu
http --session=app-test GET https://api.example.com/users/me

Autentifikasiya və başlıqlar

Httpie bayraqlar vasitəsilə bütün əsas autentifikasiya növlərini dəstəkləyir: Basic Auth üçün -a user:pass, Digest üçün --auth-type=digest, Bearer Token üçün --auth-type=bearer TOKEN. Fərdi başlıqlar komandanın istənilən yerində HeaderName:value kimi əlavə olunur.

OAuth 2.0 və Bearer Token

OAuth 2.0 ilə API-nin sınağı üçün token Authorization başlığı vasitəsilə ötürülür. Httpie nüvə səviyyəsində tokenin həyat dövrünü idarə etmir — bunu xarici skript edir. http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource əmri tokenli başlığın açıq şəkildə göstərilməsinə ekvivalentdir.

Httpie-nin CI/CD skriptlərində istifadəsi

Httpie sıfır asılılıqlar (Python istisna olmaqla) və oxuna bilən çıxış sayəsində CI/CD pipeline-lər üçün idealdır. Əmrlər əlavə pars etmədən loglarda asanlıqla oxunur. Alət pip vasitəsilə quraşdırılır və bütün populyar Docker imiclərində, o cümlədən Alpine, Ubuntu və Jenkins və GitLab CI sistemlərinin rəsmi imiclərində mövcuddur. Bu, Httpie-ni REST API və mikroxidmətlərin avtomatlaşdırılmış sınağı üçün əlverişli seçim edir.

Deyploy-da health-endpoint-in yoxlanılması

Tipik ssenari — tətbiqin deyployundan sonra API statusunun yoxlanılması. Httpie health-endpoint-ə sorğu göndərir və cavab gözlənilənə uyğun deyilsə, sıfırdan fərqli kodla işini bitirir. --check-status bayrağı status kodu >= 300 olduqda avtomatik xəta qaytarır.

bash
# Deyploy skriptində health check
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API sağlamdır" || \
    echo "API yoxlaması uğursuz oldu"

Httpie-nin genişləndirilmiş imkanları və plaginləri

Httpie plaginləri Package Index sistemi vasitəsilə dəstəkləyir. Plaginlər yeni autentifikasiya növləri, seriyalaşdırma formatları və nəqliyyat vasitələri əlavə edir. Quraşdırma pip vasitəsilə aparılır: pip install httpie-plugin-name. Quraşdırmadan sonra plagin Httpie-nin növbəti işə salınmasında avtomatik aktivləşir.

Populyar Httpie plaginləri

  • httpie-jwt-auth — refresh token mexanizmi vasitəsilə JWT tokenlərinin avtomatik alınması və yenilənməsi.
  • httpie-oauth — kodu tokenlə avtomatik mübadilə etməklə OAuth 2.0 Client Credentials və Authorization Code flow dəstəyi.
  • httpie-editor — göndərməzdən əvvəl sorğu gövdəsini mətn redaktorunda (vim, nano, VS Code) açır.
  • httpie-image — cavabdakı şəkilləri birbaşa terminalda göstərir (kitty və ya iTerm2 tələb olunur).

Skriptləşdirmə və çıxışın pars edilməsi

Httpie --pretty=format seçimi vasitəsilə jq-bənzəri filtrləməni və --print vasitəsilə cURL-uyğun çıxışı dəstəkləyir. --quiet bayrağı CI loglarında daha yaxşı oxunma üçün rəngli çıxışı söndürür. Cavabın proqram emalı üçün yalnız başlıqsız cavab gövdəsini çap edən --body bayrağından istifadə edin.

bash
# jq ilə JSON cavabından sahənin çıxarılması
http GET https://api.example.com/users/1 | jq '.name'

# Yalnız cavab gövdəsinin çap edilməsi (başlıqsız)
http --body GET https://api.example.com/health

# Fayldakı müxtəlif məlumatlarla paketlə göndərmə
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Çıxış formatları və fərdiləşdirmə

Httpie --print bayrağı ilə çıxış formatlarını dəstəkləyir: H (sorğu başlıqları), B (sorğu gövdəsi), h (cavab başlıqları), b (cavab gövdəsi). --print=hb kombinasiyası yalnız cavab başlıqlarını və gövdəsini göstərir. --pretty=all bayrağı abzaslarla rəngli formatlaşdırmanı aktivləşdirir.

Fərdi rəng sxemləri

Httpie HTTPIE_COLORS dəyişəni vasitəsilə fərdiləşdirməni dəstəkləyir. URL, başlıqlar, JSON və status kodları üçün rəng təyin edin. Müxtəlif terminallar üçün daxili mövzular mövcuddur: autumn, borland, fruity, monokai, native, tango.

JSON formatında çıxış

Proqram emalı üçün xam JSON qaytaran --body --pretty=none istifadə edin. Kompakt çıxış skriptlərdə API testinin avtomatlaşdırılmasında jq, sed və digər parserlərə ötürmək üçün faydalıdır.

Çıxış formatları və görünüşün fərdiləşdirilməsi

Httpie --print bayrağı ilə bir neçə çıxış formatını dəstəkləyir: H (sorğu başlıqları), B (sorğu gövdəsi), h (cavab başlıqları), b (cavab gövdəsi). --print=hb kombinasiyası yalnız cavab başlıqlarını və gövdəsini, rabitə haqqında meta-məlumatı istisna etməklə göstərir. --pretty=all bayrağı oxunaqlılıq üçün abzaslarla rəngli formatlaşdırmanı aktivləşdirir.

Fərdi rəng sxemləri

Httpie HTTPIE_COLORS mühit dəyişəni vasitəsilə rənglərin fərdiləşdirilməsini dəstəkləyir. URL, başlıqlar, JSON açarları və cavab status kodları üçün rəng təyin etmək olar. Müxtəlif terminal növləri və şəxsi üstünlüklər üçün daxili mövzular mövcuddur: autumn, borland, fruity, monokai, native və tango.

Formatlaşdırma olmadan JSON formatında çıxış

Çıxışın proqram emalı üçün rəngsiz və abzassız xam JSON qaytaran --body --pretty=none bayraqlar kombinasiyasından istifadə edin. Kompakt çıxış shell skriptlərində REST API testinin avtomatlaşdırılması zamanı jq, sed və digər konsol parserlərinə ötürmək üçün faydalıdır.

Tez-tez verilən suallar

Httpie standart cURL-dan nə ilə daha yaxşıdır?

Httpie əsas əməliyyatlar üçün bayraqsız daha oxuna bilən sintaksis, avtomatik JSON seriyalaşdırma, cavabın rəngli vurğulanması və daxili sessiya dəstəyi təklif edir. cURL aşağı səviyyəli əməliyyatlar üçün əvəzolunmaz qalır: FTP, SMTP və qeyri-standart protokollarla iş.

Httpie vasitəsilə form-data necə göndərilir?

-f bayrağından (və ya --form) istifadə edin: http -f POST example.com name=John file@~/photo.jpg. Httpie avtomatik olaraq Content-Type: multipart/form-data təyin edəcək. -f bayrağı olmadan məlumatlar application/json kimi göndərilir.

Httpie HTTPS və sertifikatları dəstəkləyirmi?

Bəli, Httpie HTTPS-i dəstəkləyir. Öz-özünə imzalanmış sertifikatlar üçün --verify=no bayrağından istifadə edin. Fərdi CA faylını göstərmək üçün: --verify=/path/to/cert.pem. Standart olaraq sertifikat yoxlanışı aktivdir.

Httpie-ni WebSocket üçün istifadə etmək olarmı?

Xeyr, Httpie WebSocket-i dəstəkləmir və yalnız HTTP/HTTPS protokolu üçün nəzərdə tutulub. WebSocket üçün websocat və ya wscat istifadə edin. Httpie REST, GraphQL və fayl əməliyyatlarına diqqət yetirir.

Httpie vasitəsilə cavabı fayla necə saxlamaq olar?

-d (download) bayrağından istifadə edin: http -d GET https://example.com/file.zip. Httpie faylı Content-Disposition başlığından və ya URL-dən orijinal adla saxlayacaq. Fərdi ad üçün -o output.zip göstərin.

Yekun nəticələr

  • Httpie — intuitiv sintaksisli, standart JSON və rəngli çıxışı olan konsol HTTP-müştərisi.
  • Əsas sintaksis http [method] URL [key=value] [Header:value] əksər sorğular üçün bayraq tələb etmir.
  • JSON seriyalaşdırma avtomatikdir: key=value JSON sahəsinə çevrilir, key:=value ədədlər və məntiqi dəyərlər üçündür.
  • Sessiyalar autentifikasiyalı endpoint-lərin sınağı üçün sorğular arasında kukiləri və başlıqları saxlayır.
  • Autentifikasiya --auth-type bayrağı ilə Basic, Digest, Bearer və fərdi sxemləri dəstəkləyir.
  • CI/CD inteqrasiyası --check-status və sıfır asılılıqlarla Httpie-ni deyploy skriptləri üçün əlverişli edir.
  • Fayl yükləmə -f bayrağı və key@file sintaksisi ilə multipart form-data vasitəsilə.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun