Sdílejte nás



RSS feeds

ESP32 / ESP8266 MicroPython: HTTP GET požadavekTisk

Níže uvedený článek je článek přeložený ze stránek dfrobot.com.

Úvod:
Cílem tohoto návodu je vysvětlit jak vykonat http požadavek pomocí MicroPythonu použitím knihovny urequests. Program byl testován jak na ESP32, tak ESP8266. Všechny zdrojové kódy je možné stáhnout zde. Je nutné upozornit na to, že v době psaní článku byl modul urequests součástí základního balíku MicroPythonu. To se může v budoucích verzích změnit a bude nutné ho doinstalovat ručně.

Pro tento návod je nutné mít zařízení připojené k síti. Připojíme se tedy k WiFi. Pokud nevíte, jak na to, tak koukněte na tento návod. Pro automatické připojení na startu zkuste tento návod.
V tomto návodu budeme zadávat jednotlivé příkazy do příkazové řádky. Pokud by vám tento způsob nevyhovoval, můžete si příkazy psát do scriptu a pouštět ten.
Budeme používat Putty na připojení k příkazové řádce tak, jako v ostatních návodech tohoto seriálu. Pokud nevíte, jak na to, tak koukněte do předchozích dílů.

Programování:
Nejprve je nutné provést import modulu urequests.
import urequests
Pro vytvoření HTTP požadavku stačí pouze zavolat funkci get z načteného urequests modulu. Jejím vstupem je URL adresa. V tomto návodu použijeme ukázkovou adresu (http://jsonplaceholder.typicode.com/albums/1), která na tyto požadavky reaguje tím, že vrátí testovací JSON.

Obrázek 1 – Odpověď serveru

Pro vykonání tohoto požadavku spustíme následující kód:
response = urequests.get('http://jsonplaceholder.typicode.com/albums/1')
print(type(response))

Vidíme, že odpověď je typu Response.


Obrázek 2 – Odpověď serveru

Pro přístup k datům v odpovědi serveru, přistoupíme na jeho vlastnost text.
print(response.text)
print(type(response.text))


Obrázek 3 – Zobrazení detaily odpovědi serveru

Jak je vidět z odpovědi příkazů, tak datový typ vlastnosti text je string. Pro lepší práci s jednotlivými prvky odpovědi se nám bude více hodit zavolat funkci json, která vrací datový typ dictionary. Tento typ nám lépe umožní procházet jednotlivé položky.
parsed = response.json()
print(type(parsed))


Obrázek 4 – Zpracování odpovědi

Jak je možné si všimnout ve zdrojovém kódu této funkce, tak uvnitř používá knihovnu ujson, kterou jsme použili v předchozích dílech.
Zkusíme si nyní přístup k jednotlivým prvkům odpovědi. Výstup je stejný, jaký je možné vidět v prohlížeči.
print(parsed["userId"])
print(parsed["id"])
print(parsed["title"])


Obrázek 5 – Vypsání jednotlivých prvků odpovědi

Jiným způsobem zpracování může být přístup přes vlastnost content, která vrací odpověď jako pole bytů.
print(response.content)
print(type(response.content))


Obrázek 6 – Detail vlastnosti content

Pro automatické zpracování se nám mohou hodit ještě dvě vlastnosti - status (status_code) a výsledek (reason).
print(response.status_code)
print(response.reason)

Všimněte si, že status 200 odpovídá stavu „OK' v řeči HTTP.

Obrázek 7 – Status požadavku

Originální článek je dostupný zde.
#1 | johak dne March 23 2019 14:49:06
Dovolím si uvést, že nefunguje odkaz na originální článek na konci Vašeho článku.
#2 | Petus dne March 23 2019 19:43:50
Díky, opraveno

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.