Httpie: шта је то, HTTP клијент за командну линију

Аутор: IT Sectr Објављено: 2026-05-08 Време читања: 8 мин

Httpie — конзолни HTTP клијент са читљивом синтаксом и обојеним излазом, намењен тестирању API-ја из командне линије. Алат користи интуитивну синтаксу: http GET https://api.example.com/users без потребе да се наводе заставице за заглавља и тело захтева. Према Httpie CLI Documentation (2026), алат подразумевано подржава JSON, сесије, аутентификацију и додатке.

Главно

  • Httpie — савремена замена за cURL са читљивом синтаксом, обојеним истицањем и уграђеном JSON серијализацијом.
  • Синтакса захтева се гради по шеми: http [method] URL [header:value] [key=value] без додатних заставица.
  • JSON подразумевано — тело захтева се тумачи као JSON објекат, заглавље Content-Type се додаје аутоматски.
  • Сесије чувају колачиће и заглавља између захтева, што је згодно за тестирање аутентификованих крајњих тачака.
  • Додаци проширују Httpie подршком за додатне формате, типове аутентификације и прилагођене транспорте.

Шта је Httpie и по чему се разликује од cURL-а

Httpie (или HTTPie) — конзолни алат написан у Python-у, који поједностављује слање HTTP захтева у поређењу са cURL-ом. Главна разлика је синтакса блиска природном језику: аргументи се одвајају размацима, заглавља се наводе двогачом, а JSON подаци — знаком једнакости, без избегавања наводника.

Поређење cURL-а и Httpie-а

Исти POST захтев у cURL-у захтева најмање три заставице (-X, -H, -d) и ручно избегавање JSON-а. Httpie ради исто са три речи без заставица, аутоматски поставља Content-Type: application/json и боји излаз. Одговор се подразумевано форматира са увлачењем и истицањем синтаксе.

ОперацијаcURLHttpie
GET захтевcurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
Заглављеcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Синтакса захтева у Httpie-у

Httpie користи јединствени формат командне линије без заставица за основне параметре. HTTP метода се наводи као први аргумент (GET, POST, PUT, DELETE, PATCH), а URL — као други. Ако је метода изостављена, Httpie аутоматски бира GET (за захтеве без тела) или POST (са телом).

Типови аргумената

  • Header:Value — заглавља захтева са двогачом, без размака после двогачке: Authorization:"Bearer token".
  • key=value — поља JSON објекта у телу захтева: name=John age=30.
  • key:=value — JSON вредности које нису стрингови (бројеви, булови, низови): active:=true tags:=["dev","test"].
  • key@file — учитавање вредности из датотеке: avatar@~/photo.jpg.

Httpie аутоматски одређује тип података: ако је прослеђено key=value — тело се шаље као JSON. Ако је сирови текст прослеђен преко --raw — као обичан текст. Формат form-data се активира заставицом -f.

bash
# POST захтев са JSON подацима и заглављем
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Одговор са истицањем и Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Рад са JSON-ом и датотекама

JSON серијализација у Httpie-у ради аутоматски: вредност прослеђена као key=value постаје стринг поље JSON-а. За бројеве и булове користи се key:=value. Угњеждени објекти се праве тачкастом нотацијом: address.city=Moscow.

Отпремање датотека и бинарних података

Httpie подржава формат multipart/form-data за отпремање датотека и података преко синтаксе key@path. Ако је потребно послати садржај датотеке као сирово тело захтева, користи се преусмеравање улаза: http POST example.com < file.json. За преузимање одговора у датотеку користи се заставица -d (download).

bash
# Слање JSON-а из датотеке
http POST https://api.example.com/users < user.json

# Отпремање датотеке преко multipart-а
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Управљање сесијама и колачићима

Сесије у Httpie-у чувају стање између захтева: колачиће, заглавља и параметре аутентификације. Сесија се прави заставицом --session=name. Подаци сесије чувају се у JSON датотеци у фолдеру ~/.httpie/sessions/. Сесија са суфиксом :readonly се не ажурира после захтева.

Пример тестирања сесије

Прво се извршава POST на /auth/login са акредитивима — сервер враћа колачић сесије. Сви наредни захтеви ка заштићеним крајњим тачкама у оквиру исте сесије аутоматски шаљу сачувани колачић, што опонаша понашање прегледача при тестирању API-ја мобилне апликације.

bash
# Корак 1: аутентификација
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Корак 2: захтев са сачуваним колачићем сесије
http --session=app-test GET https://api.example.com/users/me

Аутентификација и заглавља

Httpie подржава све основне типове аутентификације преко заставица: -a user:pass за Basic Auth, --auth-type=digest за Digest, --auth-type=bearer TOKEN за Bearer Token. Прилагођена заглавља се додају као HeaderName:value на било ком месту у команди.

OAuth 2.0 и Bearer Token

За тестирање API-ја са OAuth 2.0, токен се прослеђује кроз заглавље Authorization. Httpie не управља животним циклусом токена на нивоу језгра — то ради спољна скрипта. Команда http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource еквивалентна је експлицитном навођењу заглавља са токеном.

Коришћење Httpie-а у CI/CD скриптама

Httpie је идеалан за CI/CD pipeline-ове захваљујући нултим зависностима (осим Python-а) и читљивом излазу. Команде се лако читају у логовима без додатног парсирања. Алат се инсталира преко pip-а и доступан је у свим популарним Docker сликама, укључујући Alpine, Ubuntu и званичне слике CI система Jenkins и GitLab. То чини Httpie згодним избором за аутоматизовано тестирање REST API-ја и микросервиса.

Провера health-крајње тачке при деплоју

Типичан сценарио — провера статуса API-ја после деплоја апликације. Httpie шаље захтев ка health-крајњој тачки и завршава се са ненултим кодом ако одговор не одговара очекиваном. Заставица --check-status аутоматски враћа грешку при статусном коду >= 300.

bash
# Health check у деплој скрипти
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API је здрав" || \
    echo "Провера API-ја није успела"

Напредне могућности и додаци Httpie-а

Httpie подржава додатке преко система Package Index. Додаци доносе нове типове аутентификације, формате серијализације и транспорте. Инсталација се врши преко pip-а: pip install httpie-plugin-name. После инсталације, додатак се аутоматски активира при следећем покретању Httpie-а.

Популарни додаци за Httpie

  • httpie-jwt-auth — аутоматско добијање и обнављање JWT токена преко механизма refresh token.
  • httpie-oauth — подршка за OAuth 2.0 Client Credentials и Authorization Code ток са аутоматском разменом кода за токен.
  • httpie-editor — отвара тело захтева у текстуалном едитору (vim, nano, VS Code) пре слања.
  • httpie-image — приказује слике из одговора директно у терминалу (захтева kitty или iTerm2).

Скриптинг и парсирање излаза

Httpie подржава филтрирање слично jq-у преко опције --pretty=format и излаз компатибилан са cURL-ом преко --print. Заставица --quiet искључује обојени излаз ради боље читљивости у CI логовима. За програмску обраду одговора користите заставицу --body, која приказује само тело одговора без заглавља.

bash
# Издвајање поља из JSON одговора помоћу jq-а
http GET https://api.example.com/users/1 | jq '.name'

# Приказивање само тела одговора (без заглавља)
http --body GET https://api.example.com/health

# Серијско слање са различитим подацима из датотеке
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Формати излаза и прилагођавање

Httpie подржава формате излаза преко заставице --print: H (заглавља захтева), B (тело захтева), h (заглавља одговора), b (тело одговора). Комбинација --print=hb приказује само заглавља и тело одговора. Заставица --pretty=all укључује обојено форматирање са увлачењем.

Прилагођене шеме боја

Httpie подржава прилагођавање преко променљиве HTTPIE_COLORS. Подесите боју за URL, заглавља, JSON и статусне кодове. Доступне су уграђене теме: autumn, borland, fruity, monokai, native, tango за различите терминале.

Излаз у JSON формату

За програмску обраду користите --body --pretty=none, које враћа сирови JSON. Компактан излаз је користан за прослеђивање у jq, sed и друге парсере при аутоматизацији тестирања API-ја у скриптама.

Формати излаза и прилагођавање изгледа

Httpie подржава неколико формата излаза преко заставице --print: H (заглавља захтева), B (тело захтева), h (заглавља одговора), b (тело одговора). Комбинација --print=hb приказује само заглавља и тело одговора, изузимајући метаинформације о вези. Заставица --pretty=all укључује обојено форматирање са увлачењем ради читљивости.

Прилагођене шеме боја

Httpie подржава прилагођавање боја преко променљиве окружења HTTPIE_COLORS. Можете подесити боју за URL, заглавља, JSON кључеве и статусне кодове одговора. Доступне су уграђене теме: autumn, borland, fruity, monokai, native и tango за различите типове терминала и личне преференце.

Излаз у JSON формату без форматирања

За програмску обраду излаза користите комбинацију заставица --body --pretty=none, која враћа сирови JSON без боја и увлачења. Компактан излаз је користан за прослеђивање у jq, sed и друге конзолне парсере при аутоматизацији тестирања REST API-ја у shell скриптама.

Често постављана питања

По чему је Httpie бољи од стандардног cURL-а?

Httpie нуди читљивију синтаксу без заставица за основне операције, аутоматску JSON серијализацију, обојено истицање одговора и уграђену подршку за сесије. cURL остаје незаменљив за операције ниског нивоа: рад са FTP-ом, SMTP-ом и нестандардним протоколима.

Како послати form-data преко Httpie-а?

Користите заставицу -f (или --form): http -f POST example.com name=John file@~/photo.jpg. Httpie ће аутоматски поставити Content-Type: multipart/form-data. Без заставице -f подаци се шаљу као application/json.

Да ли Httpie подржава HTTPS и сертификате?

Да, Httpie подржава HTTPS. За самопотписане сертификате користите заставицу --verify=no. За навођење прилагођене CA датотеке: --verify=/path/to/cert.pem. Подразумевано, провера сертификата је укључена.

Могу ли да користим Httpie за WebSocket?

Не, Httpie не подржава WebSocket и намењен је искључиво за HTTP/HTTPS протокол. За WebSocket користите websocat или wscat. Httpie се фокусира на REST, GraphQL и операције са датотекама.

Како сачувати одговор у датотеку преко Httpie-а?

Користите заставицу -d (download): http -d GET https://example.com/file.zip. Httpie ће сачувати датотеку са оригиналним именом из заглавља Content-Disposition или из URL-а. За прилагођено име наведите -o output.zip.

Закључак

  • Httpie — конзолни HTTP клијент са интуитивном синтаксом, JSON-ом подразумевано и обојеним излазом.
  • Основна синтакса http [method] URL [key=value] [Header:value] не захтева заставице за већину захтева.
  • JSON серијализација је аутоматска: key=value постаје JSON поље, key:=value за бројеве и булове.
  • Сесије чувају колачиће и заглавља између захтева за тестирање аутентификованих крајњих тачака.
  • Аутентификација подржава Basic, Digest, Bearer и прилагођене шеме преко заставице --auth-type.
  • CI/CD интеграција са --check-status и нултим зависностима чини Httpie згодним за деплој скрипте.
  • Отпремање датотека преко multipart form-data са заставицом -f и синтаксом key@file.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође