Httpie — inson o'qishi mumkin bo'lgan sintaksis va rangli chiqishga ega, API-ni buyruq qatoridan sinab ko'rish uchun mo'ljallangan konsol HTTP-mijozidir. Asbob intuitiv sintaksisdan foydalanadi: http GET https://api.example.com/users sarlavhalar va so'rov tanasi uchun bayroqlarni ko'rsatishga hojat qoldirmasdan. Httpie CLI Documentation (2026) ma'lumotlariga ko'ra, util standart holda JSON, sessiyalar, autentifikatsiya va plaginlarni qo'llab-quvvatlaydi.
Asosiy fikrlar
Httpie (yoki HTTPie) — Python tilida yozilgan konsol utilidir, u cURL bilan solishtirganda HTTP so'rovlarini yuborishni soddalashtiradi. Asosiy farq tabiiy tilga yaqin sintaksisdir: argumentlar bo'shliqlar bilan ajratiladi, sarlavhalar ikki nuqta bilan, JSON ma'lumotlari esa tenglik belgisi bilan, qo'shtirnoqlarni ekranlashtirmasdan ko'rsatiladi.
Xuddi shu POST so'rovi cURL-da kamida uchta bayroqni (-X, -H, -d) va JSON-ni qo'lda ekranlashtirishni talab qiladi. Httpie xuddi shu ishni bayroqlarsiz uchta so'z bilan bajaradi, Content-Type: application/jsonni avtomatik o'rnatadi va chiqishni bo'yab beradi. Javob standart holda chekinishlar va sintaksis ajratishi bilan formatlanadi.
| Operatsiya | cURL | Httpie |
|---|---|---|
| GET so'rovi | 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 |
| Sarlavha | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie asosiy parametrlar uchun bayroqlarsiz yagona buyruq qatori formatidan foydalanadi. HTTP metodi birinchi argument (GET, POST, PUT, DELETE, PATCH), URL esa ikkinchi sifatida ko'rsatiladi. Agar metod tushirib qoldirilsa, Httpie avtomatik ravishda GET (tanasiz so'rovlar uchun) yoki POST (tanalik)ni tanlaydi.
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie ma'lumot turini avtomatik aniqlaydi: agar key=value uzatilsa — tana JSON sifatida yuboriladi. Agar --raw orqali xom matn uzatilsa — oddiy matn sifatida. form-data formati -f bayrog'i bilan faollashtiriladi.
# JSON ma'lumotlari va sarlavhasi bilan POST so'rovi
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Ajratish va Pretty-print bilan javob
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
JSON seriyalash Httpie-da avtomatik ishlaydi: key=value sifatida uzatilgan qiymat JSON-ning satr maydoniga aylanadi. Sonlar va mantiqiy qiymatlar uchun key:=value ishlatiladi. Ichma-ich obyektlar nuqtali yozuv orqali yaratiladi: address.city=Moscow.
Httpie fayllar va ma'lumotlarni key@path sintaksisi orqali yuklash uchun multipart/form-data formatini qo'llab-quvvatlaydi. Fayl mazmunini so'rovning xom tanasi sifatida yuborish kerak bo'lsa, kiritishni yo'naltirish ishlatiladi: http POST example.com < file.json. Javobni faylga yuklab olish uchun -d (download) bayrog'i qo'llaniladi.
# Fayldan JSON yuborish
http POST https://api.example.com/users < user.json
# Faylni multipart orqali yuklash
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Sessiyalar Httpie-da so'rovlar orasida holatni saqlaydi: cookie-fayllar, sarlavhalar va autentifikatsiya parametrlari. Sessiya --session=name bayrog'i bilan yaratiladi. Sessiya ma'lumotlari ~/.httpie/sessions/ papkasidagi JSON faylida saqlanadi. :readonly qo'shimchasiga ega sessiya so'rovdan keyin yangilanmaydi.
Avval POST kirish ma'lumotlari bilan /auth/login manziliga yuboriladi — server sessiya cookie-faylini qaytaradi. Xuddi shu sessiya ichidagi himoyalangan endpoint-larga keyingi barcha so'rovlar avtomatik ravishda saqlangan cookie-faylni yuboradi, bu mobil ilova API-sini sinashda brauzer xatti-harakatini simulyatsiya qiladi.
# 1-qadam: autentifikatsiya
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# 2-qadam: saqlangan sessiya cookie-fayli bilan so'rov
http --session=app-test GET https://api.example.com/users/me
Httpie bayroqlar orqali barcha asosiy autentifikatsiya turlarini qo'llab-quvvatlaydi: Basic Auth uchun -a user:pass, Digest uchun --auth-type=digest, Bearer Token uchun --auth-type=bearer TOKEN. Maxsus sarlavhalar buyruqning istalgan joyida HeaderName:value sifatida qo'shiladi.
OAuth 2.0 bilan API-ni sinash uchun token Authorization sarlavhasi orqali uzatiladi. Httpie yadro darajasida tokenning hayot aylanishini boshqarmaydi — buni tashqi skript bajaradi. http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource buyrug'i tokenli sarlavhani aniq ko'rsatishga teng.
Httpie nol bog'liqliklar (Python bundan mustasno) va o'qiladigan chiqish tufayli CI/CD pipeline-lar uchun idealdir. Buyruqlar qo'shimcha tahlil qilmasdan loglarda oson o'qiladi. Asbob pip orqali o'rnatiladi va barcha mashhur Docker image-larida, jumladan Alpine, Ubuntu hamda Jenkins va GitLab CI tizimlarining rasmiy image-larida mavjud. Bu Httpie-ni REST API va mikroxizmatlarni avtomatlashtirilgan sinash uchun qulay tanlovga aylantiradi.
Oddiy stsenariy — ilova deploy qilinganidan keyin API holatini tekshirish. Httpie health-endpoint-ga so'rov yuboradi va agar javob kutilganiga mos kelmasa, nolga teng bo'lmagan kod bilan tugaydi. --check-status bayrog'i holat kodi >= 300 bo'lganda avtomatik xato qaytaradi.
# Deploy skriptida health check
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API sog'lom" || \
echo "API tekshiruvi muvaffaqiyatsiz tugadi"
Httpie plaginlarni Package Index tizimi orqali qo'llab-quvvatlaydi. Plaginlar yangi autentifikatsiya turlari, seriyalash formatlari va transportlarni qo'shadi. O'rnatish pip orqali amalga oshiriladi: pip install httpie-plugin-name. O'rnatilgandan so'ng plagin Httpie-ning keyingi ishga tushirilishida avtomatik faollashadi.
Httpie --pretty=format opsiyasi orqali jq-ga o'xshash filtrlashni va --print orqali cURL-mos chiqishni qo'llab-quvvatlaydi. --quiet bayrog'i CI loglarida yaxshiroq o'qilishi uchun rangli chiqishni o'chiradi. Javobni dasturiy qayta ishlash uchun faqat sarlavhalarsiz javob tanasini chiqaradigan --body bayrog'idan foydalaning.
# jq yordamida JSON javobidan maydonni ajratib olish
http GET https://api.example.com/users/1 | jq '.name'
# Faqat javob tanasini chiqarish (sarlavhasiz)
http --body GET https://api.example.com/health
# Fayldagi turli ma'lumotlar bilan paketli yuborish
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie --print bayrog'i orqali chiqish formatlarini qo'llab-quvvatlaydi: H (so'rov sarlavhalari), B (so'rov tanasi), h (javob sarlavhalari), b (javob tanasi). --print=hb kombinatsiyasi faqat javob sarlavhalari va tanasini ko'rsatadi. --pretty=all bayrog'i chekinishlar bilan rangli formatlashni yoqadi.
Httpie HTTPIE_COLORS o'zgaruvchisi orqali sozlashni qo'llab-quvvatlaydi. URL, sarlavhalar, JSON va holat kodlari uchun rang o'rnating. Turli terminallar uchun o'rnatilgan mavzular mavjud: autumn, borland, fruity, monokai, native, tango.
Dasturiy qayta ishlash uchun xom JSON qaytaradigan --body --pretty=none dan foydalaning. Siqilgan chiqish skriptlarda API-ni sinashni avtomatlashtirishda jq, sed va boshqa parserlarga uzatish uchun foydalidir.
Httpie --print bayrog'i orqali bir nechta chiqish formatini qo'llab-quvvatlaydi: H (so'rov sarlavhalari), B (so'rov tanasi), h (javob sarlavhalari), b (javob tanasi). --print=hb kombinatsiyasi faqat javob sarlavhalari va tanasini, ulanish haqidagi meta-ma'lumotni istisno qilgan holda ko'rsatadi. --pretty=all bayrog'i o'qilishi uchun chekinishlar bilan rangli formatlashni yoqadi.
Httpie HTTPIE_COLORS muhit o'zgaruvchisi orqali ranglarni sozlashni qo'llab-quvvatlaydi. URL, sarlavhalar, JSON kalitlari va javob holat kodlari uchun rang o'rnatishingiz mumkin. Turli terminal turlari va shaxsiy afzalliklar uchun o'rnatilgan mavzular mavjud: autumn, borland, fruity, monokai, native va tango.
Chiqishni dasturiy qayta ishlash uchun rangsiz va chekinishsiz xom JSON qaytaradigan --body --pretty=none bayroqlar kombinatsiyasidan foydalaning. Siqilgan chiqish shell skriptlarida REST API-ni sinashni avtomatlashtirishda jq, sed va boshqa konsol parserlariga uzatish uchun foydalidir.
Ko'p so'raladigan savollar
Httpie asosiy operatsiyalar uchun bayroqsiz o'qiladiganroq sintaksis, avtomatik JSON seriyalash, javobni rangli ajratish va sessiyalarni ichki qo'llab-quvvatlashni taklif qiladi. cURL past darajadagi operatsiyalar uchun o'rnini bosib bo'lmaydigan bo'lib qoladi: FTP, SMTP va nostandart protokollar bilan ishlash.
-f bayrog'idan (yoki --form) foydalaning: http -f POST example.com name=John file@~/photo.jpg. Httpie avtomatik ravishda Content-Type: multipart/form-data o'rnatadi. -f bayrog'isiz ma'lumotlar application/json sifatida yuboriladi.
Ha, Httpie HTTPS-ni qo'llab-quvvatlaydi. O'z-o'zidan imzolangan sertifikatlar uchun --verify=no bayrog'idan foydalaning. Maxsus CA faylini ko'rsatish uchun: --verify=/path/to/cert.pem. Standart holda sertifikat tekshiruvi yoqilgan.
Yo'q, Httpie WebSocket-ni qo'llab-quvvatlamaydi va faqat HTTP/HTTPS protokoli uchun mo'ljallangan. WebSocket uchun websocat yoki wscat-dan foydalaning. Httpie REST, GraphQL va fayl operatsiyalariga e'tibor qaratadi.
-d (download) bayrog'idan foydalaning: http -d GET https://example.com/file.zip. Httpie faylni Content-Disposition sarlavhasidagi yoki URL-dagi asl nomi bilan saqlaydi. Maxsus nom uchun -o output.zip ni ko'rsating.
Xulosa
http [method] URL [key=value] [Header:value] ko'pchilik so'rovlar uchun bayroq talab qilmaydi.Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.