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 — как plain text. Формат 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 is healthy" || \
echo "API check failed"
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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также