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-текст через --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. Якщо потрібно надіслати вміст файлу як raw-тіло запиту, використовується перенаправлення введення: 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 зберігають стан між запитами: cookies, заголовки та параметри автентифікації. Сесія створюється прапорцем --session=name. Дані сесії зберігаються у JSON-файлі в папці ~/.httpie/sessions/. Сесія із суфіксом :readonly не оновлюється після запиту.
Спочатку виконується POST на /auth/login з обліковими даними — сервер повертає cookie сесії. Усі наступні запити до захищених кінцевих точок у межах тієї самої сесії автоматично надсилають збережений cookie, що імітує поведінку браузера під час тестування API мобільного застосунку.
# Крок 1: автентифікація
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Крок 2: запит зі збереженим cookie сесії
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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також