HTTPie: удобный HTTP‑клиент для терминала

Быстрые ссылки
- Основные команды
- Заголовки и куки
- Работа с файлами
- Сессии
- Управление выводом
- Файл конфигурации
- Практические советы и шаблоны
- Заключение
Введение
HTTPie — это HTTP‑клиент для терминала. Предназначенный как современная альтернатива curl, HTTPie упрощает взаимодействие с API благодаря понятному синтаксису и автоматически форматируемому выводу.
Доступен для Windows, macOS и Linux. Установка обычно проста: большинство дистрибутивов Linux уже включают HTTPie в свои репозитории, так что достаточно использовать ваш пакетный менеджер, например:
aptdnfили
pacmanДля macOS можно использовать Homebrew, а на всех платформах доступна установка как Python‑пакет через pip:
pip install httpieПосле установки в оболочку регистрируются команды http и https. Это даёт простой и выразительный способ вызывать API‑эндпоинты, не покидая терминал.
Установка и первые шаги
Важно: на некоторых системах команда может быть httpie вместо http; проверьте документацию пакета в вашем репозитории.
Пример проверки версии:
http --versionЕсли команда не найдена, убедитесь, что путь к исполняемому файлу входит в переменную PATH или используйте установку через pip с флагом --user.
Основные команды
Самый простой способ — передать URL, чтобы сразу выполнить GET‑запрос:
http example.comЧтобы отправить данные, укажите HTTP‑глагол и затем пары ключ=значение:
http POST example.com foo=bar hello=worldПо умолчанию данные отправляются как JSON с соответствующими заголовками. Для отправки формы (Content‑Type: application/x-www-form-urlencoded) используйте флаг -f.
При синтаксисе JSON все поля по умолчанию отправляются как строки. Чтобы отправить «сырые» данные (числа, массивы, булевы значения), используйте := вместо =. Пример:
http POST example.com examples:='[1, 2]'В этом случае ключ examples станет массивом из двух целых чисел.
Заголовки и куки
Чтобы установить заголовок запроса, укажите имя и значение через двоеточие:
http GET example.com Authorization:BearerTokenHTTPie сам устанавливает некоторые заголовки по умолчанию, например User-Agent. Чтобы удалить заголовок, укажите его с пустым значением.
Куки задаются как строка с точками с запятой внутри заголовка Cookie:
http GET example.com "Cookie:foo=bar;hello=world"Это по сути особый случай установки заголовка Cookie, через который куки передаются по HTTP.
Работа с файлами
Загрузка и скачивание файлов выполняются стандартными shell‑редиректами:
http POST example.com/upload < ~/example.pdfhttp GET example.com/download.pdf > ~/download.pdfФайлы также можно отправлять как часть HTTP‑формы с помощью синтаксиса @:
http -f POST example.com/form-with-file hello="Hello World" myUpload@~/example.pdfЭто эквивалентно HTML‑полю . Чтобы загрузить содержимое файла как значение поля (а не как файл multipart), используйте =@ вместо @.
Сессии
HTTPie поддерживает постоянные сессии. Они позволяют повторно использовать компоненты запроса (заголовки, куки) между запросами к одному хосту.
Создаёте и используете сессии через параметр --session, указывая путь к файлу для сохранения:
http --session=./my-session.json GET example.com Authorization:foobarПоддерживаемые данные сессии, такие как Authorization, будут сохранены в файл. При следующих запросах заголовок можно опустить — он будет подставлен автоматически.
Вместо пути можно указать простое имя:
http --session=example example.comHTTPie сохранит сессии в внутренние файлы, привязанные к каждому хосту отдельно.
Управление выводом
Одно из преимуществ HTTPie перед curl — автоматическое форматирование ответов. JSON выделяется красивым отступом, объекты сортируются по ключам, Unicode корректно отображается.
Для настройки вывода используйте флаг --pretty с вариантами --all (по умолчанию), --colors (только цвета), --format (только форматирование) или --none (отключить всю обработку и увидеть сырые данные).

Также можно изменить цветовую схему с помощью --style. Доступные схемы: auto (по умолчанию), default, fruity, monokai.
HTTPie автоматически распознаёт, когда вывод перенаправляется в файл, и в таком случае пропускает форматирование, передавая сырые данные. Это удобно для работы с бинарными ответами и потоковой записью в файлы.
Файл конфигурации
HTTPie поддерживает простой конфигурационный файл, который задаёт значения по умолчанию для всех запросов. На Linux/macOS файл должен лежать в ~/.config/httpie/config.json, а в Windows — в %APPDATA%httpieconfig.json.
Пример структуры файла конфигурации:
{
"default_options": [
"Authorization:foobar",
"--pretty=none",
"--style=monokai"
]
}В default_options можно перечислить любые параметры командной строки HTTPie. При необходимости их можно переопределить при запуске.
Практические советы и эвристики
Important: используйте сессии для хранения токенов и куков в рамках одного хоста, но храните файлы сессий в безопасном месте и контролируйте доступ к ним.
Советы:
- Для быстрой отладки API удобно комбинировать
--pretty=allи--style=monokai. - Для автоматизации в скриптах используйте
--pretty=noneи перенаправляйте вывод в jq или другой парсер. - Для отправки чисел и массивов используйте
:=вместо=. - Для multipart‑загрузок файлов используйте
@, для встраивания содержимого файла в JSON —=@.
Ментальная модель: представьте HTTPie как мини‑DSL для HTTP в командной строке: аргументы превращаются в заголовки и тело, @/< управляют файлами, --session — контейнер для повторяющихся настроек.
Когда HTTPie не подойдёт
Контрпример: если вам требуется максимально тонкий контроль над низкоуровневыми опциями TLS, перегрузками сокетов или сложной обработкой потоков, утилиты вроде openssl s_client, специализированные библиотеки или более «низкоуровневые» клиенты будут лучше.
HTTPie оптимизирован для человекочитаемости и удобства. Для массовой передачи больших бинарных данных или задач с миллионами параллельных запросов лучше использовать инструменты типа curl с оптимизируемыми опциями или специализированные нагрузочные генераторы.
Альтернативы и сравнение
- curl — мощный и универсальный, но синтаксис часто менее читабелен.
- wget — удобен для скачивания файлов и рекурсивного зеркалирования сайтов.
- Postman / Insomnia — GUI‑инструменты, удобны для сложных сценариев, коллекций и тестирования, но не интегрируются в терминал.
Выбор зависит от сценария: для интерактивной работы в терминале — HTTPie, для сложного скриптинга — curl, для GUI‑тестирования — Postman.
Чеклисты по ролям
Разработчик:
- Быстрый GET/POST запрос к локальному серверу
- Проверка заголовков и тела
- Использование
:=для числовых и булевых значений
Тестировщик:
- Сценарии авторизации с
--session - Автоматическая проверка ответов в CI (использовать
--pretty=none)
Операции/DevOps:
- Скрипты для health check с минимальным выводом
- Мониторинг ответа и коды статусов в автоматизации
Шаблон шагов (SOP) для типичной проверки API
- Убедиться, что сервис доступен:
http --check-status GET https://api.example.com/health - Получить токен:
http POST https://api.example.com/auth username=me password=secretи сохранить в сессии:--session=ci-token - Выполнить последовательность запросов с использованием
--session=ci-token - Проверить ответы по коду состояния и содержимому JSON
- Очистить сессию, если требуется
Критерии приёмки:
- Успешный ответ со статусом 200–299 для проверяемых эндпоинтов
- Ожидаемая структура JSON без ошибок парсинга
Сниппеты и шпаргалка команд
Часто используемые примеры:
- GET простого ресурса
http GET https://api.example.com/items- POST с JSON
http POST https://api.example.com/items name=Book price:=19.99 tags:='["fiction","bestseller"]'- Отправка файла multipart
http -f POST https://api.example.com/upload file@~/book.pdf- Сохранение сессии
http --session=./session.json POST https://api.example.com/login username=me password=secret- Сырые данные в скрипте без форматирования
http --pretty=none GET https://api.example.com/data > out.jsonСоветы по безопасности и приватности
- Никогда не сохраняйте секреты в общедоступных файлах конфигурации. Если используете
default_optionsсAuthorization, убедитесь, что файл защищён правами доступа. - Для CI используйте временные сессии и секреты из безопасного хранилища.
- Если в проекте обрабатываются персональные данные, убедитесь, что логи и дампы не содержат чувствительной информации.
Короткая методология проверки
- Вручную проверить эндпоинт в терминале с
--pretty=all. - Переключиться на
--pretty=noneи сохранить вывод. - Написать автоматические проверки на основе сохранённого вывода.
- Интегрировать в CI с учётом секретов и безопасного хранения сессий.
Глоссарий — 1 строка
- Session: файл/имя, в котором HTTPie сохраняет заголовки и куки для повторного использования.
:=: синтаксис для передачи сырых (не строковых) JSON‑значений.-f: флаг для отправки данных как формы (multipart/form-data или application/x-www-form-urlencoded).
Когда читать официальную документацию
Важно: для продвинутых сценариев (плагины, плагины стилей, расширенные опции TLS) обратитесь к официальной документации на GitHub и к страницам проекта.
Итог
HTTPie — удобный инструмент для разработчиков и тестировщиков, которые предпочитают работать в терминале. Он сочетает простоту синтаксиса, приятный формат вывода и полезные возможности для работы с сессиями и файлами. Для каждого случая использования стоит оценивать: простота и читаемость против глубины контроля. HTTPie отлично подходит для интерактивной работы и быстрой отладки API.
Summary:
- Устанавливается через пакетный менеджер или pip
- Простой синтаксис для JSON и форм
- Поддержка сессий и файловых загрузок
- Гибкое форматирование вывода и стили
Notes: если нужно интегрировать в CI/скрипты, используйте --pretty=none и безопасно управляйте сессиями.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента