Гид по технологиям

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

• 6 min read • Инструменты • Обновлено 29 Nov 2025
HTTPie — HTTP-клиент для терминала
HTTPie — HTTP-клиент для терминала

Скриншот примера запроса HTTPie

Быстрые ссылки

  • Основные команды
  • Заголовки и куки
  • Работа с файлами
  • Сессии
  • Управление выводом
  • Файл конфигурации
  • Практические советы и шаблоны
  • Заключение

Введение

HTTPie — это HTTP‑клиент для терминала. Предназначенный как современная альтернатива curl, HTTPie упрощает взаимодействие с API благодаря понятному синтаксису и автоматически форматируемому выводу.

Доступен для Windows, macOS и Linux. Установка обычно проста: большинство дистрибутивов Linux уже включают HTTPie в свои репозитории, так что достаточно использовать ваш пакетный менеджер, например:

apt
dnf

или

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:BearerToken

HTTPie сам устанавливает некоторые заголовки по умолчанию, например User-Agent. Чтобы удалить заголовок, укажите его с пустым значением.

Куки задаются как строка с точками с запятой внутри заголовка Cookie:

http GET example.com "Cookie:foo=bar;hello=world"

Это по сути особый случай установки заголовка Cookie, через который куки передаются по HTTP.

Работа с файлами

Загрузка и скачивание файлов выполняются стандартными shell‑редиректами:

http POST example.com/upload < ~/example.pdf
http 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.com

HTTPie сохранит сессии в внутренние файлы, привязанные к каждому хосту отдельно.

Управление выводом

Одно из преимуществ HTTPie перед curl — автоматическое форматирование ответов. JSON выделяется красивым отступом, объекты сортируются по ключам, Unicode корректно отображается.

Для настройки вывода используйте флаг --pretty с вариантами --all (по умолчанию), --colors (только цвета), --format (только форматирование) или --none (отключить всю обработку и увидеть сырые данные).

Скриншот JSON-вывода HTTPie

Также можно изменить цветовую схему с помощью --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

  1. Убедиться, что сервис доступен: http --check-status GET https://api.example.com/health
  2. Получить токен: http POST https://api.example.com/auth username=me password=secret и сохранить в сессии: --session=ci-token
  3. Выполнить последовательность запросов с использованием --session=ci-token
  4. Проверить ответы по коду состояния и содержимому JSON
  5. Очистить сессию, если требуется

Критерии приёмки:

  • Успешный ответ со статусом 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 используйте временные сессии и секреты из безопасного хранилища.
  • Если в проекте обрабатываются персональные данные, убедитесь, что логи и дампы не содержат чувствительной информации.

Короткая методология проверки

  1. Вручную проверить эндпоинт в терминале с --pretty=all.
  2. Переключиться на --pretty=none и сохранить вывод.
  3. Написать автоматические проверки на основе сохранённого вывода.
  4. Интегрировать в 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 и безопасно управляйте сессиями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро