HTTPie

Page

Stránky / Softvér /

HTTPie je program, ktorý slúži na testovanie HTTP požiadaviek. Ovláda sa podobne ako známy program curl, primárne sa ale sústreďuje na uľahčenie komunikácie najmä pomocou dátového formátu JSON. HTTPie je napísaný v Pythone.

Pokiaľ to myslíte s Internetom vecí pomocou mikrokontrolérov vážne, bez tohto programu sa nezaobídete. Pomocou neho si môžete otestovať komunikáciu s konkrétnym serverom a podľa potreby si zobrazíte z komunikácie presne to, čo vás zaujíma. Program poskytuje pekný farebný výstup, ktorý uľahčuje orientáciu v zobrazovaných údajoch.

Inštalácia programu

Prepokladom inštalácie je nainštalovaný Python na vašom počítači. Budeme predpokladať, že používate Windows a viete si spustiť príkazový riadok. Pokiaľ používate iný operačný systém, je vysoko pravdepodobné, že otázky inštalácie a používania Pythonu a príkazového riadku sú vám dôverne známe a z týchto príkladov všetko ľahko pochopíte aj bez extra upozorňovania na možné odlišnosti správania. Tých rozdielov ale je medzi všetkými systémami v prípade používania Pythonu minimum.

HTTPie nainštalujete tak, že do príkazového riadku napíšete príkaz

pip install --upgrade httpie

Stiahnu sa vám všetky potrebné balíky a môžete začať testovať HTTP požiadavky. V tomto článku nájdete len tie príklady, ktoré nejako súvisia s potrebami tejto stránky.Ciže primárne sa sústredím na vytváranie požiadaviek, ktoré môžete nejako využiť pri programovaní Arduina. Program toho vie ale omnoho viac a originálnu dokumentáciu nájdete na stránke projektu (GitHub, httpie.org).

Testovanie bez nebezpečenstva škody

Všetky príklady som napísal pre server httpbin.org, ktorý umožňuje otestovať ľubovoľnú požiadavku a naspäť vám vráti vo formáte JSON, čo ste urobili. Nemusíte sa báť, že by ste svojou chybou niečo vyviedli, pretože tento server len odpovedá a nič iné nevykonáva.

Zobrazenie požiadavky aj odpovede

Pomocou tohto príkladu si vygenerujete presný text požiadavky. Podstatný je parameter -v, ktorý to zabezpečuje. Do príkazového riadku napíšete príkaz

http -v get https://httpbin.org/get a==6

Požiadavka

GET /get?a=6 HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: httpbin.org
User-Agent: HTTPie/0.9.6

Odpoveď

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 250
Content-Type: application/json
Date: Sun, 04 Dec 2016 19:53:44 GMT
Server: nginx

{
    "args": {
        "a": "6"
    },
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.6"
    },
    "origin": "188.167.204.54",
    "url": "https://httpbin.org/get?a=6"
}

V príkazovom riadku uvidíte celú svoju komunikáciu a podľa nej už ľahko vytvoríte takú istú požiadavku aj pomocou Arduina.

Príkaz GET

Príkaz GET odosiela požiadavky aj s parametrami priamo v URL adrese. HTTPie umožňuje ľahko vytvoriť viac parametrov a postará sa o to, aby vznikla správna URL adresa. Napríklad takto odošlete dva parametre prvy a druhy.

http -v get https://httpbin.org/get prvy==100 druhy=="arduino slovakia"

Požiadavka

GET /get?prvy=100&druhy=arduino+slovakia HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: httpbin.org
User-Agent: HTTPie/0.9.6

Odpoveď

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 317
Content-Type: application/json
Date: Sun, 04 Dec 2016 20:06:45 GMT
Server: nginx

{
    "args": {
        "druhy": "arduino slovakia",
        "prvy": "100"
    },
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.6"
    },
    "origin": "188.167.204.54",
    "url": "https://httpbin.org/get?prvy=100&druhy=arduino+slovakia"
}

Príkaz POST

Príkaz POST umožňuje v tele požiadavky zaslať údaje. Vo svete Internetu vecí sa využíva najmä JSON a HTTPie to implicitne urobí. Do príkazového riadku napíšte príkaz

http -v post https://httpbin.org/post prvy=100 druhy="arduino slovakia"

Požiadavka

POST /post HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 44
Content-Type: application/json
Host: httpbin.org
User-Agent: HTTPie/0.9.6

{
    "druhy": "arduino slovakia",
    "prvy": "100"
}

Odpoveď

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 487
Content-Type: application/json
Date: Sun, 04 Dec 2016 20:11:44 GMT
Server: nginx

{
    "args": {},
    "data": "{\"prvy\": \"100\", \"druhy\": \"arduino slovakia\"}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "application/json, */*",
        "Accept-Encoding": "gzip, deflate",
        "Content-Length": "44",
        "Content-Type": "application/json",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.6"
    },
    "json": {
        "druhy": "arduino slovakia",
        "prvy": "100"
    },
    "origin": "188.167.204.54",
    "url": "https://httpbin.org/post"
}

Príkaz POST ako formulárové dáta

Takto vyzerá požiadavka, ktorú ako keby ste napísali do nejakého formulára priamo na stránke v Internete.

http -v -f post https://httpbin.org/post prvy=100 druhy="arduino slovakia"

Požiadavka

POST /post HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 31
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: httpbin.org
User-Agent: HTTPie/0.9.6

prvy=100&druhy=arduino+slovakia

Odpoveď

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 451
Content-Type: application/json
Date: Sun, 04 Dec 2016 20:16:32 GMT
Server: nginx

{
    "args": {},
    "data": "",
    "files": {},
    "form": {
        "druhy": "arduino slovakia",
        "prvy": "100"
    },
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Content-Length": "31",
        "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.6"
    },
    "json": null,
    "origin": "188.167.204.54",
    "url": "https://httpbin.org/post"
}

Ak ma napadnú ešte iné možnosti využitia, tak ich sem doplním. S týmito príkazmi by ste ale mali byť schopní vytvoriť väčšinu požiadaviek v Internete vecí.


04.12.2016


Menu