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-এর মাধ্যমে র টেক্সট দেওয়া হলে প্লেইন টেক্সট হিসেবে পাঠানো হয়। -f ফ্ল্যাগ দিয়ে form-data ফরম্যাট সক্রিয় হয়।

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 API এবং মাইক্রোসার্ভিসের স্বয়ংক্রিয় টেস্টিংয়ের জন্য সুবিধাজনক পছন্দ করে তোলে।

ডিপ্লয়ের সময় 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন