Httpie — конзолен HTTP клиент с четим за човека синтаксис и цветен изход, предназначен за тестване на API от командния ред. Инструментът използва интуитивен синтаксис: http GET https://api.example.com/users без да е необходимо да посочвате флагове за заглавията и тялото на заявката. Според Httpie CLI Documentation (2026), помощната програма по подразбиране поддържа JSON, сесии, удостоверяване и добавки.
Основни точки
Httpie (или HTTPie) — конзолна помощна програма, написана на Python, която опростява изпращането на HTTP заявки в сравнение с cURL. Основната разлика е синтаксис, близък до естествения език: аргументите се разделят с интервали, заглавията се посочват с двоеточие, а JSON данните — със знак за равенство, без да се налага екраниране на кавичките.
Същата POST заявка в cURL изисква поне три флага (-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.
# POST заявка с JSON данни и заглавие
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 работи автоматично: стойността, предадена като key=value, става низово поле на JSON. За числа и булеви стойности се използва key:=value. Вложени обекти се създават чрез точкова нотация: address.city=Moscow.
Httpie поддържа формата multipart/form-data за качване на файлове и данни чрез синтаксиса key@path. Ако е необходимо съдържанието на файл да се изпрати като сурово тяло на заявката, се използва пренасочване на входа: 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. Данните на сесията се съхраняват в JSON файл в папката ~/.httpie/sessions/. Сесия със суфикс :readonly не се актуализира след заявка.
Първо се изпълнява POST към /auth/login с идентификационни данни — сървърът връща бисквитката на сесията. Всички последващи заявки към защитени крайни точки в рамките на същата сесия автоматично изпращат запазената бисквитка, което имитира поведението на браузъра при тестване на 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 поддържа всички основни типове удостоверяване чрез флагове: -a user:pass за Basic Auth, --auth-type=digest за Digest, --auth-type=bearer TOKEN за Bearer Token. Персонализирани заглавия се добавят като HeaderName:value на произволно място в командата.
За тестване на API с OAuth 2.0 токенът се предава чрез заглавието Authorization. Httpie не управлява жизнения цикъл на токена на ядрено ниво — това прави външен скрипт. Командата http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource е еквивалентна на изричното посочване на заглавието с токен.
Httpie е идеален за CI/CD пайплайни благодарение на нулевите зависимости (освен Python) и четливия изход. Командите се четат лесно в логовете без допълнителен парсинг. Инструментът се инсталира чрез pip и е наличен във всички популярни Docker образи, включително Alpine, Ubuntu и официалните образи на CI системите Jenkins и GitLab. Това прави 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 поддържа филтриране, подобно на jq, чрез опцията --pretty=format и изход, съвместим с cURL, чрез --print. Флагът --quiet изключва цветния изход за по-добра четимост в CI логовете. За програмна обработка на отговора използвайте флага --body, който показва само тялото на отговора без заглавия.
# Извличане на поле от JSON отговора с помощта на jq
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. Компактният изход е полезен за предаване към jq, sed и други парсъри при автоматизиране на тестването на API в скриптове.
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 без цветове и отстъпи. Компактният изход е полезен за предаване към jq, sed и други конзолни парсъри при автоматизиране на тестването на REST API в shell скриптове.
Често задавани въпроси
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 създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също