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-এর মাধ্যমে র টেক্সট দেওয়া হলে প্লেইন টেক্সট হিসেবে পাঠানো হয়। -f ফ্ল্যাগ দিয়ে form-data ফরম্যাট সক্রিয় হয়।
# 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 API এবং মাইক্রোসার্ভিসের স্বয়ংক্রিয় টেস্টিংয়ের জন্য সুবিধাজনক পছন্দ করে তোলে।
সাধারণ দৃশ্য — অ্যাপ ডিপ্লয়ের পরে 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন