Sdílejte chiptron.cz na sociálních sítích



RSS feeds

ESP32 / ESP8266 MicroPython: HTTP POST 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 ukázat, jak lze v MicroPythonu zpracovávat HTTP požadavky a data z nich předané metodou POST. Opět k tomu využijeme knihovnu urequests. 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ě. Program byl testován jak na ESP32, tak ESP8266.

Všechny články o MicroPython a ESP32/ESP8266 najdete na https://chiptron.cz/articles.php?cat_id=23

Náš požadavek pošleme do testovací online služby, která má REST API a umí tyto požadavky zpracovat. Má několik způsobů, jak tam požadavek typu POST poslat. My využijeme tu, kde stačí za adresu přidat /post.
Nejprve musíme mít zařízení připojené do internetu. V přechozím díle bylo vysvětleno, jak na to.

Program:
Nejprve musíme načíst knihovnu urequests, abychom mohli vytvářet HTTP požadavky.
import urequests
Pro vytvoření požadavku zavoláme funkci post. Tato funkce má jako vstup URL adresu, kam má být požadavek směřován, a parametry požadavku. Tyto parametry jsou ve tvaru klíč-hodnota. V definici funkce bychom mohli najít, že parametry jsou definovány jako argumenty typu **kwargs. Více si o nich můžete přečíst zde.

Jelikož v sobě funkce post volá funkci request, můžeme se podívat na dodatečné parametry, které můžeme funkci předat a které ovlivní její chování. Například parametr data odpovídá tělu požadavku. Pro jednoduchou ukázku funkce zkusíme poslat jen jednoduchou zprávu a nebudeme rozlišovat tzv. content-type. Zavoláme tedy následující příkaz a uložíme si výsledek do proměnné response.

response = urequests.post("http://jsonplaceholder.typicode.com/posts", data = "some dummy content")

Datový typ proměnné response je Response. Pokud bychom zkusili vykonat stejný požadavek službou Postman, vidíme, že nám stránka vrátí odpověď, ve které je položka id s hodnotou 101. Tato odpověď nijak nezávisí na těle naší zprávy. Je to z důvodu, že využíváme testovací službu. V reálném provozu by se nám čísla dost pravděpodobně měnily v závislosti na vykonané akci.


Obrázek 1 – Odpověď serveru

Ve výsledku si tedy jen stačí získat data z naší odpovědi. Přistoupíme k tomu buď jako k obyčejnému textu, a nebo to zpracujeme jako json, protože text odpovědi je tohoto typu. Vnitřně funkce json používá knihovnu ujson, se kterou jsme pracovali v minulých dílech.
print(response.text)
print(response.json())



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

Originální článek je dostupný zde.

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.
10,887,605 návštěv