ESP32 / ESP8266 MicroPython: HTTP POST požadavek
- March 17 2019
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 1383x Přečteno
Ú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.