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 підставляється автоматично.
  • Сесії зберігають cookies та заголовки між запитами, що зручно для тестування автентифікованих кінцевих точок.
  • Плагіни розширюють Httpie підтримкою додаткових форматів, типів автентифікації та кастомних транспортів.

Що таке Httpie і чим він відрізняється від cURL

Httpie (або HTTPie) — консольна утиліта на Python, яка спрощує надсилання HTTP-запитів порівняно з cURL. Головна відмінність — синтаксис, наближений до природної мови: аргументи розділяються пробілами, заголовки вказуються через двокрапку, а JSON-дані — через знак рівності без екранування лапок.

Порівняння cURL та Httpie

Той самий POST-запит у cURL вимагає щонайменше три прапорці (-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-значення non-string (числа, булеві, масиви): active:=true tags:=["dev","test"].
  • key@file — завантаження значення з файлу: avatar@~/photo.jpg.

Httpie автоматично визначає тип даних: якщо передано key=value — тіло надсилається як JSON. Якщо передано raw-текст через --raw — як простий текст. Формат form-data активується прапорцем -f.

bash
# 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 та файлами

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).

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"

Керування сесіями та cookies

Сесії у Httpie зберігають стан між запитами: cookies, заголовки та параметри автентифікації. Сесія створюється прапорцем --session=name. Дані сесії зберігаються у JSON-файлі в папці ~/.httpie/sessions/. Сесія із суфіксом :readonly не оновлюється після запиту.

Приклад сесійного тестування

Спочатку виконується POST на /auth/login з обліковими даними — сервер повертає cookie сесії. Усі наступні запити до захищених кінцевих точок у межах тієї самої сесії автоматично надсилають збережений cookie, що імітує поведінку браузера під час тестування API мобільного застосунку.

bash
# Крок 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 у будь-якому місці команди.

OAuth 2.0 та Bearer Token

Для тестування API з OAuth 2.0 токен передається через заголовок Authorization. Httpie не керує життєвим циклом токена на рівні ядра — це робить зовнішній скрипт. Команда http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource еквівалентна явному зазначенню заголовка з токеном.

Використання Httpie в CI/CD скриптах

Httpie ідеально підходить для CI/CD-пайплайнів завдяки нульовим залежностям (окрім Python) і читабельному виводу. Команди легко читаються в логах без додаткового парсингу. Інструмент встановлюється через pip і доступний у всіх популярних Docker-образах, зокрема Alpine, Ubuntu та офіційних образах CI систем Jenkins і GitLab. Це робить 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 — автоматичне отримання та оновлення JWT-токенів через механізм refresh token.
  • httpie-oauth — підтримка OAuth 2.0 Client Credentials та Authorization Code flow з автоматичним обміном коду на токен.
  • httpie-editor — відкриває тіло запиту в текстовому редакторі (vim, nano, VS Code) перед надсиланням.
  • httpie-image — відображає зображення з відповіді прямо в терміналі (потрібен kitty або iTerm2).

Скриптинг і парсинг виводу

Httpie підтримує фільтрацію, подібну до jq, через опцію --pretty=format та cURL-сумісний вивід через --print. Прапорець --quiet вимикає кольоровий вивід для кращої читабельності в логах CI. Для програмної обробки відповіді використовуйте прапорець --body, який виводить лише тіло відповіді без заголовків.

bash
# Витяг поля з 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 для різних терміналів.

Вивід у JSON форматі

Для програмної обробки використовуйте --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 для різних типів терміналів та особистих уподобань.

Вивід у JSON форматі без форматування

Для програмної обробки виводу використовуйте комбінацію прапорців --body --pretty=none, яка повертає сирий JSON без кольорів і відступів. Компактний вивід корисний для передачі в jq, sed та інші консольні парсери під час автоматизації тестування REST API в shell-скриптах.

Часті запитання

Чим Httpie кращий за стандартний cURL?

Httpie пропонує більш читабельний синтаксис без прапорців для базових операцій, автоматичну JSON-серіалізацію, кольорове підсвічування відповіді та вбудовану підтримку сесій. cURL залишається незамінним для низькорівневих операцій: роботи з FTP, SMTP та нестандартними протоколами.

Як надіслати form-data через Httpie?

Використовуйте прапорець -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. За замовчуванням перевірку сертифіката ввімкнено.

Чи можна використовувати Httpie для WebSocket?

Ні, 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 — консольний HTTP-клієнт з інтуїтивним синтаксисом, JSON за замовчуванням і кольоровим виводом.
  • Базовий синтаксис http [method] URL [key=value] [Header:value] не потребує прапорців для більшості запитів.
  • JSON-серіалізація автоматична: key=value стає полем JSON, key:=value для чисел і булевих значень.
  • Сесії зберігають cookies та заголовки між запитами для тестування автентифікованих кінцевих точок.
  • Автентифікація підтримує Basic, Digest, Bearer та кастомні схеми через прапорець --auth-type.
  • CI/CD інтеграція з --check-status і нульовими залежностями робить Httpie зручним для деплой-скриптів.
  • Завантаження файлів через multipart form-data з прапорцем -f і синтаксисом key@file.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також