Httpie: کیا ہے، کمانڈ لائن کے لیے HTTP کلائنٹ

مصنف: IT Sectr اشاعت: 2026-05-08 مطالعے کا وقت: 8 منٹ

Httpie ایک کنسول HTTP کلائنٹ ہے جس میں انسانی پڑھنے کے قابل نحو اور رنگین آؤٹ پٹ ہے، جو کمانڈ لائن سے API کی جانچ کے لیے ڈیزائن کیا گیا ہے۔ یہ ٹول بدیہی نحو استعمال کرتا ہے: http GET https://api.example.com/users — ہیڈر اور درخواست کے جسم کے لیے فلیگز بتانے کی ضرورت کے بغیر۔ Httpie CLI Documentation (2026) کے مطابق یہ یوٹیلیٹی ڈیفالٹ طور پر JSON، سیشنز، تصدیق اور پلگ انز کو سپورٹ کرتی ہے۔

اہم نکات

  • Httpie cURL کا جدید متبادل ہے جس میں پڑھنے کے قابل نحو، رنگین ہائی لائٹنگ اور بلٹ ان JSON سیریلائزیشن شامل ہے۔
  • نحو درخواست اس اسکیم کے مطابق بنتی ہے: http [method] URL [header:value] [key=value] — اضافی فلیگز کے بغیر۔
  • ڈیفالٹ طور پر JSON — درخواست کے جسم کو JSON آبجیکٹ سمجھا جاتا ہے اور Content-Type ہیڈر خودکار طور پر سیٹ ہوتا ہے۔
  • سیشنز درخواستوں کے درمیان کوکیز اور ہیڈر محفوظ رکھتے ہیں، جو تصدیق شدہ اینڈ پوائنٹس کی جانچ کے لیے آسان ہے۔
  • پلگ انز اضافی فارمیٹس، تصدیق کی اقسام اور حسب ضرورت ٹرانسپورٹ کی معاونت سے Httpie کو بڑھاتے ہیں۔

Httpie کیا ہے اور یہ cURL سے کیسے مختلف ہے

Httpie (یا HTTPie) Python میں لکھی گئی ایک کمانڈ لائن یوٹیلیٹی ہے جو cURL کے مقابلے میں HTTP درخواستیں بھیجنا آسان بناتی ہے۔ اہم فرق قدرتی زبان کے قریب نحو ہے: آرگیومنٹس خالی جگہوں سے الگ ہوتے ہیں، ہیڈر کولن سے بتائے جاتے ہیں، اور JSON ڈیٹا کوٹس کو ایسکیپ کیے بغیر مساوی نشان سے بتایا جاتا ہے۔

cURL اور Httpie کا موازنہ

cURL میں ایک ہی POST درخواست کے لیے کم از کم تین فلیگز (-X، -H، -d) اور دستی JSON ایسکیپنگ درکار ہوتی ہے۔ Httpie فلیگز کے بغیر تین الفاظ میں یہی کام کرتا ہے، خودکار طور پر Content-Type: application/json سیٹ کرتا ہے اور آؤٹ پٹ کو ہائی لائٹ کرتا ہے۔ جواب ڈیفالٹ طور پر انڈینٹیشن اور نحو ہائی لائٹنگ کے ساتھ فارمیٹ ہوتا ہے۔

عملcURLHttpie
GET درخواستcurl 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
ہیڈرcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Httpie میں درخواستوں کا نحو

Httpie اہم پیرامیٹرز کے لیے فلیگز کے بغیر ایک واحد کمانڈ لائن فارمیٹ استعمال کرتا ہے۔ HTTP طریقہ پہلے آرگیومنٹ (GET، POST، PUT، DELETE، PATCH) کے طور پر بتایا جاتا ہے، URL دوسرے کے طور پر۔ اگر طریقہ چھوڑ دیا جائے تو Httpie خودکار طور پر GET (بغیر جسم والی درخواستوں کے لیے) یا POST (جسم کے ساتھ) منتخب کرتا ہے۔

آرگیومنٹس کی اقسام

  • Header:Value — کولن والے درخواست ہیڈر، کولن کے بعد کوئی خالی جگہ نہیں: Authorization:"Bearer token"۔
  • key=value — درخواست کے جسم میں JSON آبجیکٹ کے فیلڈز: name=John age=30۔
  • key:=value — غیر سٹرنگ JSON قدریں (نمبر، بولین، اریز): active:=true tags:=["dev","test"]۔
  • key@file — فائل سے قدر لوڈ کرنا: avatar@~/photo.jpg۔

Httpie خودکار طور پر ڈیٹا کی قسم کا تعین کرتا ہے: اگر key=value بھیجا جائے تو جسم JSON کے طور پر بھیجا جاتا ہے۔ اگر --raw کے ذریعے خام متن بھیجا جائے تو یہ سادہ متن کے طور پر بھیجا جاتا ہے۔ form-data فارمیٹ -f فلیگ سے فعال ہوتا ہے۔

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

JSON اور فائلوں کے ساتھ کام کرنا

Httpie میں JSON سیریلائزیشن خودکار طور پر کام کرتی ہے: key=value کے طور پر بھیجی گئی قدر JSON کا سٹرنگ فیلڈ بن جاتی ہے۔ نمبروں اور بولین اقدار کے لیے key:=value استعمال ہوتا ہے۔ نیسٹڈ آبجیکٹ ڈاٹ نوٹیشن سے بنائے جاتے ہیں: address.city=Moscow۔

فائلیں اور بائنری ڈیٹا اپ لوڈ کرنا

Httpie key@path نحو کے ذریعے فائلیں اور ڈیٹا اپ لوڈ کرنے کے لیے multipart/form-data فارمیٹ کو سپورٹ کرتا ہے۔ اگر فائل کے مواد کو درخواست کے خام جسم کے طور پر بھیجنا ہو تو ان پٹ ری ڈائریکشن استعمال ہوتی ہے: http POST example.com < file.json۔ جواب کو فائل میں ڈاؤن لوڈ کرنے کے لیے -d (download) فلیگ استعمال ہوتا ہے۔

bash
# فائل سے 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 جانچتے وقت براؤزر کے رویے کی نقل کرتا ہے۔

bash
# مرحلہ 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 اور Bearer Token

OAuth 2.0 والی API کی جانچ کے لیے ٹوکن Authorization ہیڈر کے ذریعے بھیجا جاتا ہے۔ Httpie ٹوکن کے لائف سائیکل کو کور سطح پر منظم نہیں کرتا — یہ ایک بیرونی اسکرپٹ کرتی ہے۔ http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource کمانڈ ٹوکن کے ساتھ ہیڈر کو واضح طور پر بتانے کے برابر ہے۔

CI/CD اسکرپٹس میں Httpie کا استعمال

Httpie صفر ڈیپنڈنسیز (Python کے علاوہ) اور پڑھنے کے قابل آؤٹ پٹ کی وجہ سے CI/CD پائپ لائنز کے لیے مثالی ہے۔ کمانڈز بغیر اضافی پارسنگ کے لاگز میں آسانی سے پڑھی جاتی ہیں۔ یہ ٹول pip کے ذریعے انسٹال ہوتا ہے اور تمام مشہور Docker امیجز میں دستیاب ہے، بشمول Alpine، Ubuntu اور Jenkins و GitLab کی سرکاری CI امیجز۔ یہ Httpie کو REST APIs اور مائیکرو سروسز کی خودکار جانچ کے لیے ایک آسان انتخاب بناتا ہے۔

ڈیپلائی میں health اینڈ پوائنٹ کی جانچ

ایک عام منظر ایپ کی ڈیپلائی کے بعد API کی حالت کی جانچ کرنا ہے۔ Httpie health اینڈ پوائنٹ پر درخواست بھیجتا ہے اور اگر جواب متوقع نہ ہو تو غیر صفر کوڈ کے ساتھ ختم ہوتا ہے۔ --check-status فلیگ اسٹیٹس کوڈ >= 300 پر خودکار طور پر خرابی لوٹاتا ہے۔

bash
# ڈیپلائی اسکرپٹ میں health check
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API صحت مند ہے" || \
    echo "API چیک ناکام ہو گیا"

Httpie کی جدید خصوصیات اور پلگ انز

Httpie Package Index سسٹم کے ذریعے پلگ انز کو سپورٹ کرتا ہے۔ پلگ انز تصدیق کی نئی اقسام، سیریلائزیشن فارمیٹس اور ٹرانسپورٹ شامل کرتے ہیں۔ انسٹالیشن pip کے ذریعے ہوتی ہے: pip install httpie-plugin-name۔ انسٹالیشن کے بعد پلگ ان Httpie کے اگلے لانچ پر خودکار طور پر فعال ہو جاتا ہے۔

مشہور Httpie پلگ انز

  • httpie-jwt-auth — refresh token میکانزم کے ذریعے JWT ٹوکنز کی خودکار حصول اور تجدید۔
  • httpie-oauth — ٹوکن کے لیے خودکار کوڈ تبادلے کے ساتھ OAuth 2.0 Client Credentials اور Authorization Code فلو کی معاونت۔
  • httpie-editor — بھیجنے سے پہلے درخواست کا جسم ٹیکسٹ ایڈیٹر (vim، nano، VS Code) میں کھولتا ہے۔
  • httpie-image — جواب کی تصاویر براہ راست ٹرمینل میں دکھاتا ہے (kitty یا iTerm2 درکار ہے)۔

اسکرپٹنگ اور آؤٹ پٹ پارسنگ

Httpie --pretty=format آپشن کے ذریعے jq جیسی فلٹرنگ اور --print کے ذریعے cURL مطابق آؤٹ پٹ کو سپورٹ کرتا ہے۔ --quiet فلیگ CI لاگز میں بہتر پڑھنے کے لیے رنگین آؤٹ پٹ بند کر دیتا ہے۔ جواب کی پروگرامیٹک پروسیسنگ کے لیے --body فلیگ استعمال کریں، جو ہیڈر کے بغیر صرف جواب کا جسم آؤٹ پٹ کرتا ہے۔

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

JSON فارمیٹ میں آؤٹ پٹ

پروگرامیٹک پروسیسنگ کے لیے --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۔

فارمیٹنگ کے بغیر JSON فارمیٹ میں آؤٹ پٹ

آؤٹ پٹ کی پروگرامیٹک پروسیسنگ کے لیے --body --pretty=none فلیگ کمبینیشن استعمال کریں، جو رنگوں اور انڈینٹیشن کے بغیر خام JSON لوٹاتا ہے۔ کمپیکٹ آؤٹ پٹ شیل اسکرپٹس میں REST API جانچ کو خودکار بناتے وقت jq، sed اور دیگر کنسول پارسرز تک پہنچانے کے لیے مفید ہے۔

اکثر پوچھے جانے والے سوالات

Httpie معیاری cURL سے بہتر کیوں ہے؟

Httpie بنیادی کاموں کے لیے فلیگز کے بغیر زیادہ پڑھنے کے قابل نحو، خودکار JSON سیریلائزیشن، جواب کی رنگین ہائی لائٹنگ اور بلٹ ان سیشن سپورٹ فراہم کرتا ہے۔ cURL کم سطح کے کاموں کے لیے ناگزیر رہتا ہے: FTP، SMTP اور غیر معیاری پروٹوکولز کے ساتھ کام کرنا۔

Httpie کے ذریعے form-data کیسے بھیجیں؟

-f فلیگ (یا --form) استعمال کریں: http -f POST example.com name=John file@~/photo.jpg۔ Httpie خودکار طور پر Content-Type: multipart/form-data سیٹ کرے گا۔ -f فلیگ کے بغیر ڈیٹا application/json کے طور پر بھیجا جاتا ہے۔

کیا Httpie HTTPS اور سرٹیفکیٹس کو سپورٹ کرتا ہے؟

ہاں، Httpie HTTPS کو سپورٹ کرتا ہے۔ خود دستخط شدہ سرٹیفکیٹس کے لیے --verify=no فلیگ استعمال کریں۔ حسب ضرورت CA فائل بتانے کے لیے: --verify=/path/to/cert.pem۔ ڈیفالٹ طور پر سرٹیفکیٹ کی تصدیق فعال ہے۔

کیا WebSocket کے لیے Httpie استعمال کیا جا سکتا ہے؟

نہیں، Httpie WebSocket کو سپورٹ نہیں کرتا اور صرف HTTP/HTTPS پروٹوکول کے لیے ہے۔ WebSocket کے لیے websocat یا wscat استعمال کریں۔ Httpie REST، GraphQL اور فائل کاموں پر مرکوز ہے۔

Httpie کے ذریعے جواب کو فائل میں کیسے محفوظ کریں؟

-d (download) فلیگ استعمال کریں: http -d GET https://example.com/file.zip۔ Httpie فائل کو Content-Disposition ہیڈر یا URL سے اصل نام کے ساتھ محفوظ کرے گا۔ حسب ضرورت نام کے لیے -o output.zip بتائیں۔

خلاصہ

  • Httpie — بدیہی نحو، ڈیفالٹ JSON اور رنگین آؤٹ پٹ والا کنسول HTTP کلائنٹ۔
  • بنیادی نحو http [method] URL [key=value] [Header:value] زیادہ تر درخواستوں کے لیے فلیگز کی ضرورت نہیں ہوتی۔
  • JSON سیریلائزیشن خودکار ہے: key=value JSON فیلڈ بن جاتا ہے، نمبروں اور بولین اقدار کے لیے key:=value۔
  • سیشنز تصدیق شدہ اینڈ پوائنٹس کی جانچ کے لیے درخواستوں کے درمیان کوکیز اور ہیڈر محفوظ رکھتے ہیں۔
  • تصدیق --auth-type فلیگ کے ذریعے Basic، Digest، Bearer اور حسب ضرورت اسکیمیں سپورٹ کرتی ہے۔
  • CI/CD انٹیگریشن --check-status اور صفر ڈیپنڈنسیز کے ساتھ Httpie کو ڈیپلائی اسکرپٹس کے لیے آسان بناتا ہے۔
  • فائل اپ لوڈ -f فلیگ اور key@file نحو کے ساتھ multipart form-data کے ذریعے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں