Поиск по сайту:

Как использовать HTTPie для взаимодействия с API из терминала


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

Доступно для Windows, Mac и Linux, настройка должна быть простой. Большинство дистрибутивов Linux теперь включают HTTPie в свои репозитории пакетов, поэтому вы можете быстро начать работу с apt, dnf или pacman. Он также доступен для пользователей Homebrew для Mac и в виде пакета Python, поставляемого через Pip на всех трех платформах (pip install httpie).

После установки HTTPie регистрирует команды http и https в вашей оболочке. Теперь у вас есть простой и выразительный способ вызова конечных точек API, не покидая терминала!

Основные команды

В простейшем случае HTTPie можно передать URL-адрес, чтобы немедленно выполнить запрос GET:

http example.com

Чтобы отправить данные, укажите соответствующую команду HTTP, а затем передайте пары ключ/значение в качестве дополнительных параметров командной строки:

http POST example.com foo=bar hello=world

По умолчанию данные отправляются в формате JSON с соответствующими заголовками запроса. Чтобы вместо этого отправить форму, передайте параметр -f.

При использовании синтаксиса JSON помните, что все поля обычно отправляются в виде строк. Вы можете использовать синтаксис := вместо = для переключения в режим необработанных данных. Параметр examples:=[1, 2] приведет к тому, что для ключа examples будет задан массив из двух целых чисел.

Заголовки и файлы cookie

Чтобы установить заголовок запроса, укажите имя и значение заголовка в виде строки, разделенной двоеточием:

http GET example.com Authorization:foobar

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

Файлы cookie устанавливаются путем определения строки с файлами cookie в виде значений, разделенных двоеточием:

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

На самом деле это всего лишь частный случай установки заголовка Cookie, который используется для отправки файлов cookie по HTTP.

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

Вы можете загружать и скачивать файлы, используя стандартные перенаправления оболочки:

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-файла с name=\myUpload\. Вместо этого вы можете загрузить данные из файла и внедрить их в запрос, используя синтаксис =@ вместо @.

Сессии

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

Вы создаете и используете сеансы, устанавливая параметр --session. В качестве его значения укажите путь к файлу, в котором будет храниться ваша новая сессия.

http --session=./my-session.json GET example.com Authorization:foobar

Данные, поддерживаемые сеансами, такие как заголовок Authorization в приведенном выше запросе, теперь будут сохранены в файле. В последующих запросах вы теперь можете опустить заголовок Authorization — он будет автоматически включен, как это определено в вашем сеансе.

Вместо указания файла сеанса вы также можете использовать простое имя (--session=example). В этом случае HTTPie автоматически сохранит сеанс во внутреннем управляемом файле. Каждый сеанс привязан к хосту, с которого он исходит, поэтому http --session=example example1.com и http --session=example example2.com будут существовать независимо друг от друга. другой.

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

Одним из значительных улучшений HTTPie по сравнению с такими утилитами, как curl, является автоматическое форматирование ответов. Тела JSON особенно хорошо обрабатываются, с правильными отступами, алфавитной сортировкой объектов по их ключам и правильным преобразованием символов Unicode.

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

Кроме того, вы можете изменить цветовую схему, используя флаг --style. Доступны следующие схемы: auto (по умолчанию), default (используйте базовые стили библиотеки Pygments), fruity и популярный monokai.

Вам не нужно беспокоиться о форматировании по умолчанию при перенаправлении вывода в файл. HTTPie распознает перенаправление и просто передаст необработанные данные без применения какого-либо форматирования. Это также означает, что бинарные ответы, которые обычно никогда не отправляются на терминал, могут передаваться в файлы.

Конфигурационный файл

HTTPie поддерживает базовый файл конфигурации, который можно использовать для определения настроек по умолчанию. Они будут применяться ко всем вашим запросам. Файл следует сохранить в ~/.config/httpie/config.json в Linux/Mac и в %APPDATA%httpieconfig.json в Windows.

Поддерживается единственный ключ конфигурации, default_options, который принимает базовый массив параметров для добавления к командам HTTPie, которые вы выполняете:

{
    "default_options": [
        "Authorization:foobar",
        "--pretty=none",
        "--style=monokai"
    ]
}

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

Заключение

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

Стоит потратить время на чтение официальной документации, если вы хотите узнать больше о HTTPie. Вся разработка происходит открыто на GitHub, а поддержка предоставляется на Gitter и StackOverflow.




Все права защищены. © Linux-Console.net • 2019-2024