Httpie ایک کنسول HTTP کلائنٹ ہے جس میں انسانی پڑھنے کے قابل نحو اور رنگین آؤٹ پٹ ہے، جو کمانڈ لائن سے API کی جانچ کے لیے ڈیزائن کیا گیا ہے۔ یہ ٹول بدیہی نحو استعمال کرتا ہے: http GET https://api.example.com/users — ہیڈر اور درخواست کے جسم کے لیے فلیگز بتانے کی ضرورت کے بغیر۔ Httpie CLI Documentation (2026) کے مطابق یہ یوٹیلیٹی ڈیفالٹ طور پر JSON، سیشنز، تصدیق اور پلگ انز کو سپورٹ کرتی ہے۔
اہم نکات
Httpie (یا HTTPie) Python میں لکھی گئی ایک کمانڈ لائن یوٹیلیٹی ہے جو cURL کے مقابلے میں HTTP درخواستیں بھیجنا آسان بناتی ہے۔ اہم فرق قدرتی زبان کے قریب نحو ہے: آرگیومنٹس خالی جگہوں سے الگ ہوتے ہیں، ہیڈر کولن سے بتائے جاتے ہیں، اور JSON ڈیٹا کوٹس کو ایسکیپ کیے بغیر مساوی نشان سے بتایا جاتا ہے۔
cURL میں ایک ہی POST درخواست کے لیے کم از کم تین فلیگز (-X، -H، -d) اور دستی JSON ایسکیپنگ درکار ہوتی ہے۔ Httpie فلیگز کے بغیر تین الفاظ میں یہی کام کرتا ہے، خودکار طور پر Content-Type: application/json سیٹ کرتا ہے اور آؤٹ پٹ کو ہائی لائٹ کرتا ہے۔ جواب ڈیفالٹ طور پر انڈینٹیشن اور نحو ہائی لائٹنگ کے ساتھ فارمیٹ ہوتا ہے۔
| عمل | cURL | Httpie |
|---|---|---|
| GET درخواست | 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 |
| ہیڈر | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie اہم پیرامیٹرز کے لیے فلیگز کے بغیر ایک واحد کمانڈ لائن فارمیٹ استعمال کرتا ہے۔ HTTP طریقہ پہلے آرگیومنٹ (GET، POST، PUT، DELETE، PATCH) کے طور پر بتایا جاتا ہے، URL دوسرے کے طور پر۔ اگر طریقہ چھوڑ دیا جائے تو Httpie خودکار طور پر GET (بغیر جسم والی درخواستوں کے لیے) یا POST (جسم کے ساتھ) منتخب کرتا ہے۔
Authorization:"Bearer token"۔name=John age=30۔active:=true tags:=["dev","test"]۔avatar@~/photo.jpg۔Httpie خودکار طور پر ڈیٹا کی قسم کا تعین کرتا ہے: اگر key=value بھیجا جائے تو جسم JSON کے طور پر بھیجا جاتا ہے۔ اگر --raw کے ذریعے خام متن بھیجا جائے تو یہ سادہ متن کے طور پر بھیجا جاتا ہے۔ form-data فارمیٹ -f فلیگ سے فعال ہوتا ہے۔
# JSON ڈیٹا اور ایک ہیڈر کے ساتھ POST درخواست
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# ہائی لائٹنگ اور Pretty-print کے ساتھ جواب
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Httpie میں JSON سیریلائزیشن خودکار طور پر کام کرتی ہے: key=value کے طور پر بھیجی گئی قدر JSON کا سٹرنگ فیلڈ بن جاتی ہے۔ نمبروں اور بولین اقدار کے لیے key:=value استعمال ہوتا ہے۔ نیسٹڈ آبجیکٹ ڈاٹ نوٹیشن سے بنائے جاتے ہیں: address.city=Moscow۔
Httpie key@path نحو کے ذریعے فائلیں اور ڈیٹا اپ لوڈ کرنے کے لیے multipart/form-data فارمیٹ کو سپورٹ کرتا ہے۔ اگر فائل کے مواد کو درخواست کے خام جسم کے طور پر بھیجنا ہو تو ان پٹ ری ڈائریکشن استعمال ہوتی ہے: http POST example.com < file.json۔ جواب کو فائل میں ڈاؤن لوڈ کرنے کے لیے -d (download) فلیگ استعمال ہوتا ہے۔
# فائل سے JSON بھیجنا
http POST https://api.example.com/users < user.json
# multipart کے ذریعے فائل اپ لوڈ
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Httpie میں سیشنز درخواستوں کے درمیان حالت محفوظ رکھتے ہیں: کوکیز، ہیڈر اور تصدیق کے پیرامیٹرز۔ سیشن --session=name فلیگ سے بنایا جاتا ہے۔ سیشن کا ڈیٹا ~/.httpie/sessions/ فولڈر میں JSON فائل میں محفوظ ہوتا ہے۔ :readonly لاحقہ والا سیشن درخواست کے بعد اپ ڈیٹ نہیں ہوتا۔
پہلے اسناد کے ساتھ /auth/login پر POST درخواست بھیجی جاتی ہے — سرور سیشن کوکی لوٹاتا ہے۔ اسی سیشن کے اندر محفوظ اینڈ پوائنٹس پر بعد کی تمام درخواستیں خودکار طور پر محفوظ شدہ کوکی بھیجتی ہیں، جو موبائل ایپ کی API جانچتے وقت براؤزر کے رویے کی نقل کرتا ہے۔
# مرحلہ 1: تصدیق
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# مرحلہ 2: محفوظ شدہ سیشن کوکی کے ساتھ درخواست
http --session=app-test GET https://api.example.com/users/me
Httpie فلیگز کے ذریعے تصدیق کی تمام اہم اقسام کو سپورٹ کرتا ہے: Basic Auth کے لیے -a user:pass، Digest کے لیے --auth-type=digest، Bearer Token کے لیے --auth-type=bearer TOKEN۔ حسب ضرورت ہیڈر HeaderName:value کے طور پر کمانڈ میں کہیں بھی شامل کیے جاتے ہیں۔
OAuth 2.0 والی API کی جانچ کے لیے ٹوکن Authorization ہیڈر کے ذریعے بھیجا جاتا ہے۔ Httpie ٹوکن کے لائف سائیکل کو کور سطح پر منظم نہیں کرتا — یہ ایک بیرونی اسکرپٹ کرتی ہے۔ http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource کمانڈ ٹوکن کے ساتھ ہیڈر کو واضح طور پر بتانے کے برابر ہے۔
Httpie صفر ڈیپنڈنسیز (Python کے علاوہ) اور پڑھنے کے قابل آؤٹ پٹ کی وجہ سے CI/CD پائپ لائنز کے لیے مثالی ہے۔ کمانڈز بغیر اضافی پارسنگ کے لاگز میں آسانی سے پڑھی جاتی ہیں۔ یہ ٹول pip کے ذریعے انسٹال ہوتا ہے اور تمام مشہور Docker امیجز میں دستیاب ہے، بشمول Alpine، Ubuntu اور Jenkins و GitLab کی سرکاری CI امیجز۔ یہ Httpie کو REST APIs اور مائیکرو سروسز کی خودکار جانچ کے لیے ایک آسان انتخاب بناتا ہے۔
ایک عام منظر ایپ کی ڈیپلائی کے بعد API کی حالت کی جانچ کرنا ہے۔ Httpie health اینڈ پوائنٹ پر درخواست بھیجتا ہے اور اگر جواب متوقع نہ ہو تو غیر صفر کوڈ کے ساتھ ختم ہوتا ہے۔ --check-status فلیگ اسٹیٹس کوڈ >= 300 پر خودکار طور پر خرابی لوٹاتا ہے۔
# ڈیپلائی اسکرپٹ میں health check
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API صحت مند ہے" || \
echo "API چیک ناکام ہو گیا"
Httpie Package Index سسٹم کے ذریعے پلگ انز کو سپورٹ کرتا ہے۔ پلگ انز تصدیق کی نئی اقسام، سیریلائزیشن فارمیٹس اور ٹرانسپورٹ شامل کرتے ہیں۔ انسٹالیشن pip کے ذریعے ہوتی ہے: pip install httpie-plugin-name۔ انسٹالیشن کے بعد پلگ ان Httpie کے اگلے لانچ پر خودکار طور پر فعال ہو جاتا ہے۔
Httpie --pretty=format آپشن کے ذریعے jq جیسی فلٹرنگ اور --print کے ذریعے cURL مطابق آؤٹ پٹ کو سپورٹ کرتا ہے۔ --quiet فلیگ CI لاگز میں بہتر پڑھنے کے لیے رنگین آؤٹ پٹ بند کر دیتا ہے۔ جواب کی پروگرامیٹک پروسیسنگ کے لیے --body فلیگ استعمال کریں، جو ہیڈر کے بغیر صرف جواب کا جسم آؤٹ پٹ کرتا ہے۔
# jq کے ساتھ JSON جواب سے فیلڈ نکالنا
http GET https://api.example.com/users/1 | jq '.name'
# صرف جواب کا جسم آؤٹ پٹ (ہیڈر کے بغیر)
http --body GET https://api.example.com/health
# فائل سے مختلف ڈیٹا کے ساتھ بیچ بھیجنا
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie --print فلیگ کے ذریعے آؤٹ پٹ فارمیٹس کو سپورٹ کرتا ہے: H (درخواست ہیڈر)، B (درخواست کا جسم)، h (جواب ہیڈر)، b (جواب کا جسم)۔ --print=hb کمبینیشن صرف جواب کے ہیڈر اور جسم کو آؤٹ پٹ کرتا ہے۔ --pretty=all فلیگ انڈینٹیشن کے ساتھ رنگین فارمیٹنگ فعال کرتا ہے۔
Httpie HTTPIE_COLORS متغیر کے ذریعے حسب ضرورت کو سپورٹ کرتا ہے۔ URL، ہیڈر، JSON اور اسٹیٹس کوڈز کے لیے رنگ ترتیب دیں۔ مختلف ٹرمینلز کے لیے بلٹ ان تھیمز دستیاب ہیں: autumn، borland، fruity، monokai، native، tango۔
پروگرامیٹک پروسیسنگ کے لیے --body --pretty=none استعمال کریں، جو خام JSON لوٹاتا ہے۔ کمپیکٹ آؤٹ پٹ اسکرپٹس میں API جانچ کو خودکار بناتے وقت jq، sed اور دیگر پارسرز تک پہنچانے کے لیے مفید ہے۔
Httpie --print فلیگ کے ذریعے متعدد آؤٹ پٹ فارمیٹس کو سپورٹ کرتا ہے: H (درخواست ہیڈر)، B (درخواست کا جسم)، h (جواب ہیڈر)، b (جواب کا جسم)۔ --print=hb کمبینیشن کنکشن کی میٹا معلومات کو چھوڑ کر صرف جواب کے ہیڈر اور جسم کو آؤٹ پٹ کرتا ہے۔ --pretty=all فلیگ پڑھنے کے لیے انڈینٹیشن کے ساتھ رنگین فارمیٹنگ فعال کرتا ہے۔
Httpie ماحولیاتی متغیر HTTPIE_COLORS کے ذریعے رنگ کی حسب ضرورت کو سپورٹ کرتا ہے۔ آپ URL، ہیڈر، JSON کیز اور جواب کے اسٹیٹس کوڈز کے لیے رنگ ترتیب دے سکتے ہیں۔ مختلف ٹرمینل اقسام اور ذاتی ترجیحات کے لیے بلٹ ان تھیمز دستیاب ہیں: autumn، borland، fruity، monokai، native اور tango۔
آؤٹ پٹ کی پروگرامیٹک پروسیسنگ کے لیے --body --pretty=none فلیگ کمبینیشن استعمال کریں، جو رنگوں اور انڈینٹیشن کے بغیر خام JSON لوٹاتا ہے۔ کمپیکٹ آؤٹ پٹ شیل اسکرپٹس میں REST API جانچ کو خودکار بناتے وقت jq، sed اور دیگر کنسول پارسرز تک پہنچانے کے لیے مفید ہے۔
اکثر پوچھے جانے والے سوالات
Httpie بنیادی کاموں کے لیے فلیگز کے بغیر زیادہ پڑھنے کے قابل نحو، خودکار JSON سیریلائزیشن، جواب کی رنگین ہائی لائٹنگ اور بلٹ ان سیشن سپورٹ فراہم کرتا ہے۔ cURL کم سطح کے کاموں کے لیے ناگزیر رہتا ہے: FTP، SMTP اور غیر معیاری پروٹوکولز کے ساتھ کام کرنا۔
-f فلیگ (یا --form) استعمال کریں: http -f POST example.com name=John file@~/photo.jpg۔ Httpie خودکار طور پر Content-Type: multipart/form-data سیٹ کرے گا۔ -f فلیگ کے بغیر ڈیٹا application/json کے طور پر بھیجا جاتا ہے۔
ہاں، Httpie HTTPS کو سپورٹ کرتا ہے۔ خود دستخط شدہ سرٹیفکیٹس کے لیے --verify=no فلیگ استعمال کریں۔ حسب ضرورت CA فائل بتانے کے لیے: --verify=/path/to/cert.pem۔ ڈیفالٹ طور پر سرٹیفکیٹ کی تصدیق فعال ہے۔
نہیں، Httpie WebSocket کو سپورٹ نہیں کرتا اور صرف HTTP/HTTPS پروٹوکول کے لیے ہے۔ WebSocket کے لیے websocat یا wscat استعمال کریں۔ Httpie REST، GraphQL اور فائل کاموں پر مرکوز ہے۔
-d (download) فلیگ استعمال کریں: http -d GET https://example.com/file.zip۔ Httpie فائل کو Content-Disposition ہیڈر یا URL سے اصل نام کے ساتھ محفوظ کرے گا۔ حسب ضرورت نام کے لیے -o output.zip بتائیں۔
خلاصہ
http [method] URL [key=value] [Header:value] زیادہ تر درخواستوں کے لیے فلیگز کی ضرورت نہیں ہوتی۔ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں