В рамках проекта HTTPie предпринята попытка создания упрощённого аналога утилиты curl, ориентированного на отправку запросов с использованием API web-сервисов. В отличие от curl, HTTPie изначально ориентирован на использование JSON и поддерживает подсветку синтаксиса, что позволяет увеличить наглядность вывода результатов обращения к различным API. Код утилиты написан на языке Python с использованием модулей Requests и Pygments. Исходные тексты распространяются под лицензией BSD.
Запрос формируется без нагромождения опциями в виде «http метод URL параметры». Поддерживается разбор параметров в формате JSON и автоматическая сериализация в JSON параметров, заданных в виде списка. Если в качестве разделителя параметров используется двоеточие, считается, что это HTTP-заголовок, если символ «=» — строковый параметр запроса, «:=» — числовой параметр.
Например, после выполнения:
http PATCH api.example.com/person/1 X-API-Token:123 name=John email=john@example.org age:=29
будет выполнен запрос:
PATCH /person/1 HTTP/1.1 User-Agent: HTTPie/0.1 X-API-Token: 123 Content-Type: application/json; charset=utf-8 {"name": "John", "email": "john@example.org", "age": 29}
если дополнительно указать опцию «-f» то вместо «application/json» будет использован тип «application/x-www-form-urlencoded» и в итоге получим:
PATCH /person/1 HTTP/1.1 User-Agent: HTTPie/0.1 X-API-Token: 123 Content-Type: application/x-www-form-urlencoded; charset=utf-8 age=29name=Johnemail=john%40example.org