Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. HTTP

HTTPie — удобный инструмент похожий на cURL

by
Difficulty:BeginnerLength:ShortLanguages:

Russian (Pусский) translation by Stanislav Protasevich (you can also view the original English article)

cURL — это самый известный инструмент для отправки HTTP запросов из командной строки. В этом уроке мы познакомим вас с более удобным аналогом, который называется HTTPie. HTTPie поддерживает простой и понятный синтаксис команд, а также должным образом осуществляет вывод результата.

Из официальной документации:

HTTPie (произносится как эйч-ти-ти-пай) консольный HTTP клиент. Главное назначение: насколько это возможно облегчить работу со сторонними сервисами через CLI. В арсенале данного инструмента есть команда http, которая предназначена для отправки HTTP запросов, используя простой и понятный синтаксис, а также вывод окрашенного результата. HTTPie можно задействовать в тестировании, отладке и любом другом взаимодействии с HTTP серверами.

Начало работы с HTTPie

Для того чтобы начать работать с HTTPie на Ubuntu необходимо установить специальный пакет, используя apt-get.

После завершения процесса установки HTTPie будет доступен для запуска на вашей ОС.  Для отправки GET запроса на любой сайт воспользуйтесь HTTPie командой:

Результат вышеуказанной команды вернёт нам следующий результат:

HTTP Response

Похоже, что HTTPie действительно внедрён в нашу ОС.  Если внимательно проанализировать результат, то можно понять, что запрашиваемый URL перенаправляет запрос на https://tutsplus.com.  Подкорректируем наш GET запрос:

На этот раз результатом выполнения GET запроса будет HTML код запрашиваемого URL https://tutsplus.com.

Данный пример показывает нам, что для выполнения запроса HTTPie достаточно будет указать только URL.

Выполнение обычных запросов, используя HTTPie

Перед тем как разобрать основные команды HTTPie давайте по-быстрому посмотрим как выполнять самые распространённые запросы.  Воспользуемся инструментом json-server для создания фейкового сервера, к которому будем стучаться нашими запросами.  Установить json-server можно через npm.

Создайте файл index.js и поместите туда фейковые данные.

Запустите сервер, указав файл index.js.

Наш фейковый сервер должен быть доступен по адресу http://localhost:3000/.

Выполнение GET запросов, используя HTTPie

Любой HTTPie  запрос с отсутствием параметров будет выполнен посредством отправки GET запроса.  Пример GET запроса:

В результате выполнения команды получим следующий результат:

Выполнение POST запросов, используя HTTPie

Для отправки POST запроса, нам необходимо указать ключевое слово POST перед URL.  Пример:

В результате выполнения команды получим следующий результат:

Теперь если снова выполнить GET запрос, то получим список пользователей, включая только что вставленные данные.

Отправка форм, используя HTTPie

Частенько пользователю приходится заполнять формы.  HTTPie в значительной мере упрощает данную задачу. Просто добавьте флаг form:

В результате выполнения данной команды, значение заголовка запроса Content-Type будет автоматически преобразовано в application/x-www-form-urlencoded; charset=utf-8, так что об этом не стоит волноваться.

Обработка HTTP перенаправлений

Как видно из самого первого примера, по умолчанию HTTPie не следует HTTP перенаправлениям.  Когда мы отправляли GET запрос на www.tutsplus.com, то увидели сообщение в котором говорилось, что URL ресурс был перемещён.  Для того чтобы HTTPie всё же следовал по цепочке перенаправлений можете воспользоваться флагом follow.

В этом случае HTTPie проследует по всей цепочке HTTP адресов.

Загрузка файлов, используя HTTPie

Загрузить файл с сервера через HTTPie так же просто как вызвать команду wget.  Чтобы скачать файл вам нужно указать параметр download перед URL.

В результате выполнения команды получим следующий результат:

Работа с аутентификацией

Доступ к некоторым URL потребует осуществить аутентификацию.  HTTPie поддерживает целый ряд возможных механизмов.  По умолчанию HTTPie отработает обычную аутентификацию, поэтому после параметра -a нужно передать только имя пользователя и пароль.

Для осуществления дайджест-аутентификации необходимо добавить соответствующую запись перед параметром -A.

Настройка формата вывода результатов

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

После выполнения данной команды мы увидим только заголовки:

Если же выполнить HTTP запрос с параметром --body, то будет осуществлён вывод “тела” ответа.

Результат выполнения вышеуказанной команды:

Работа с сессиями

HTTPie позволяет осуществлять запросы, которые зависят друг от друга.  Мы можем сохранить данные сессии, которые пригодятся для выполнения других HTTP запросов.  Для работы с сессионными данным нужно указать название хранилища как это показано ниже:

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

Работа с автоподстановкой

Трудно запомнить все команды, которые доступны в HTTPie.  К счастью вы можете установить инструмент http-prompt, который позволяет выбирать различные HTTPie команды из выпадающего списка.  Установим http-prompt через pip:

Запустите http-prompt, указав URL сервера к которому мы будем стучаться.  Перезапустите json-server и стартаните http-prompt как показано ниже:

Введите несколько символов в HTTP, и автоподстановка проявиться.

A demo of the autocomplete

После ввода httpie должен высветиться запрашиваемый URL.

Все запросы, доступные в HTTPie должны поддерживаться инструментом http-prompt.  Введите слово GET и получите все возможные результаты автоподстановки.  Пример подсказки при вводе слова GET: 

The response of a GET command

Подытожим

В этом уроке мы показали как организовать работу с более удобной альтернативой cURL — программой HTTPie.  Нами были рассмотрены такие приёмы как выполнение обычных запросов типа GET и POST, а также множество других тем.  Для более подробной информации по работе HTTPie читайте официальную документацию.  Так же не забудьте посетить официальный мануал инструмента http-prompt.  И конечно же, оставляйте свои мысли в комментариях.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.