Mag-imbak ng data sa isang IoT web server gamit ang mga kahilingan sa HTTP POST

Mag-imbak ng data sa isang IoT web server gamit ang mga kahilingan sa HTTP POST

Mag-imbak ng data sa isang IoT web server gamit ang mga kahilingan sa HTTP POST

IoT web serverHTTP POST IoT Web ServerMySQL Database. IoT web serverPHP Language IoT Web Server

Gaya ng ipinaliwanag sa unang artikulo ng serye mag-imbak ng data na nakuha ng mga device ng Internet of Things, kahit na ang data na nai-save ay napupunta sa isang server MySQL o MariaDB at wika ang ginagamit PHP upang manipulahin ang mga ito sa input at output, ang daloy ng impormasyon sa pagitan ng elektronikong kagamitan at ang database ay nangyayari gamit ang a web server kung kanino ka nakikipag-usap ayon sa HTTP protocol.

Sa simula ng kahulugan ng HTTP protocol May mga gamit na maihahambing sa isa na inilarawan ngunit ang katotohanan ay na sa huli ay hindi pa ito ganap na pinagsamantalahan para sa iba't ibang mga kadahilanan, bahagyang seguridad at bahagyang dahil ang pag-unlad ay hindi kailanman ginawa sa pagtukoy ng isang mas tiyak o mas mahusay na protocol, kaya Ngayon, lalo na sa mga pampublikong server, ang pinakakaraniwang bagay ay ang paggamit ng koneksyon HTTP ano ang gumagawa ng a hiling ng POST sa server upang mag-imbak ng impormasyon o a GET upang mabawi ito, karaniwang upang ipakita ang isang web page na nagpapakita nito at kahit na kung saan maaari kang makipag-ugnayan.

Ang pinakapangunahing text na ipinadala sa server sa isang kahilingan HTTP POST may kasamang linya na may uri ng kahilingan (POST) ang landas patungo sa web page na mag-iimbak ng impormasyon at ang bersyon ng HTTP protocol; isa pang linya na may pangalan ng host (na nagbibigay-daan sa mga virtual server sa parehong server at/o sa parehong IP address) at sa wakas ay isa pa na naglalaman ng data na naitala, na pinaghihiwalay ng & sign at mula sa mga nakaraang linya ng isa. blangko.

Sa halimbawa sa itaas, ang isang server na tinatawag na polaridad.es ay maglalaman ng isang pahina sa /iot/grabar_temperatura upang pamahalaan ang impormasyon gamit ang bersyon 1.1 ng HTTP protocol

Makikita na dalawang & sign ang ginagamit na nagpapakita na tatlong field ang nakaimbak. Ang pangalan ng mga patlang ay nasa kaliwa ng equal sign at dalawang letra lamang ang ginamit upang tukuyin ang mga ito. Bilang pangalan ng mga patlang (o mga variable, kung gusto mo) ng kahilingan HTTP Ang mga ito ay hindi nauugnay sa mga nasa database, hindi gaanong mahalaga na gumamit ng mga naglalarawang teksto at ang mga maikling pangalan ay karaniwang pinipili (kahit na may bilang na mga patlang) upang i-save ang teksto sa komunikasyon sa server at pabilisin ang proseso ng pagpapadala ng data.

Ang data na karaniwang ipinapadala ng isang IoT device sa server ay uri ng numero, pangunahin ang mga integer at simpleng decimal. Kapag ang mga halaga ay ipinadala sa format ng teksto, tulad ng kaso sa variable na "ne" sa halimbawa, maaaring lumitaw ang hindi kanais-nais na mga pangyayari na maaaring malutas, depende sa kaso, na may higit o mas kaunting tagumpay at kadalian. Sa pagkakataong ito, ginagamit ang mga plus sign (+) upang paghiwalayin ang mga salita, na pinapalitan ang mga puwang na maaaring magbago sa hiling ng POST. Ang isang generic na paraan ng pagpapadala ng data na lumulutas sa karamihan ng mga kaso ay sa pamamagitan ng pagpahiwatig ng hexadecimal code ng mga character, na sinusundan ng percentage sign (%) Sa lohikal na paraan, hindi ipinapayong gamitin ang mapagkukunang ito maliban kung ang naka-encode ay may problema dahil Ang haba ng kung ano ang ipinadala ay nadagdagan, na sa pangkalahatan ay nangangailangan ng mas maraming mapagkukunan, bagama't ito ay tiyak na napakaliit sa laki.

Bagama't posibleng magpatakbo ng a web server Para sa Internet of Things lamang gamit ang impormasyon mula sa nakaraang halimbawa, maraming mga server, lalo na ang mga pampubliko, ang nagdaragdag ng iba pang data sa POST query (sa kasamaang palad ay hindi palaging limitado sa protocol). Ang halimbawa sa ibaba ay tumutugma sa kahilingan sa post na hiniling ng balon -kilalang server.pampubliko para sa internet ng mga bagay ThingSpeak.

Bilang karagdagan sa ilang personal na data, tulad ng X-THINGSPEAKAPIKEY (at na tumutugma sa identifier ng bawat kliyente) sa nakaraang halimbawa makikita mo na may iba pang mga header na nagdaragdag ng higit pang impormasyon sa kahilingan.

Paano gumamit ng header sa a hiling ng POST Binubuo lamang ito ng pagsulat ng pangalan nito, isang colon sign (:), isang blangkong espasyo at ang halaga na gusto mong italaga dito.

Upang masubukan ang mga kahilingan ng POST sa web server bago kumpletuhin ang pagsasaayos ng iba pang mga bahagi, maaaring magtatag ng koneksyon sa server at manu-manong ipinadala ang data. Halimbawa, sa isang Linux computer ay sapat na itong gamitin telnet polaridad.es 80 kung saan polaridad.es ang pangalan ng server at 80 ang port number kung saan tumugon ang serbisyo. HTTP.

Kumonekta sa polaridad.es web server gamit ang telnet upang mag-imbak ng data ng IoT

Ang cross-platform tool ay maaaring gamitin sa Linux, Windows o OS PuTTY, na pinag-usapan sa artikulo kontrolin ang mga serial device ng UART mula sa computer, upang gawin ang koneksyon nang hindi gumagamit ng console.

Kumonekta sa polaridad.es web server gamit ang PuTTY upang mag-imbak ng data ng IoT

Sa susunod Listahan ng mga header ng HTTP Mayroong karamihan sa mga maaaring maging kapaki-pakinabang para sa a hiling ng POST sa isang web server para sa Internet ng mga bagay.

  • Accept Ito ay ginagamit upang ipahiwatig ang uri Mime na inaasahan ng kahilingan na gagamitin ng server sa tugon. Ito ay ipinahayag bilang tipo/subtipo na maaaring gawing pangkalahatan gamit ang asterisk (*) bilang wildcard sign, halimbawa bilang */* upang sumangguni sa alinman o tipo/* upang sumangguni sa lahat ng mga subtype ng tipo

    Ang pinakakaraniwang ginagamit ay:

    • text/plain Bagaman ito ang pinakapangunahing, ito rin ang pinakaginagamit. Inaasahan nitong magbabalik ang server ng simpleng (plain) na tugon sa text na sapat upang ipaalam na tama ang transaksyon at higit sa lahat ay magdagdag ng accessory na impormasyon tulad ng order number ng naitala na data, ang resulta ng paghahambing, ang petsa ng server…

    • application/xml o text/xml Hintaying tumugon ang server sa kahilingan sa format XML. Ang kahulugan ng pagpili text sa halip ng application nagbibigay-daan para sa mas madaling "tao" (kumpara sa "awtomatikong") pagbabasa. Ang duality na ito ay magpapakita mismo sa iba Mga uri ng MIME ngunit ang hinaharap na kalakaran ng pamantayan ay mas gusto application laban sa text Ang format XML nagbibigay-daan sa isang tugon na naglalaman ng maraming data na maiayos sa isang napaka-solid na paraan, ang disbentaha ay nagdaragdag ito ng maraming katalinuhan sa net data, na ginagawang ang tugon ay tumatagal ng higit sa kinakailangan, samakatuwid ay nangangailangan ng mas maraming bandwidth at marahil higit pa memory sa IoT device para iproseso ito.

    • text/html Ginagamit kapag ang tugon ng server ay HTML naka-encode bilang plain text (plain text) kadalasang nagfo-format ng tugon. Dahil ito ay tungkol sa pag-iimbak ng data at ang tugon ay makakarating sa isang maliit na device na walang maraming mapagkukunan, hindi karaniwan na gamitin ang ganitong uri.

    • application/xhtml+xml Talaga ito ay ang bersyon XHTML (HTML bilang XML wasto) ng impormasyon sa nakaraang seksyon.

    • application/json Ito ay kadalasang ginagamit kapag ang tugon ng server ay naglalaman ng ilang data kabilang ang isang mas o hindi gaanong kumplikadong istraktura. Ang format JSON ibahagi sa format XML isang matatag na istraktura at nagdaragdag ng kalamangan ng pagiging mas maigsi sa teksto na idinagdag ng istraktura.

  • Accept-Charset Tinutukoy ang text encoding na hinihiling na gamitin sa tugon. Upang i-encode ang mga Latin na character, ang UTF-8, ang pinakakumpleto, ISO-8859 15, na kinabibilangan ng Euro sign (€) at ang ISO-8859 1, na siyang pinakapangunahing.

  • Accept-Encoding Ipinapahiwatig ang format kung saan maaaring i-encode ang tugon ng server. Karaniwang nagsisilbi itong ipahiwatig ang isang uri ng compression. Ang ilan sa mga madalas ay gzip deflate (na maaaring tukuyin nang mas detalyado sa deflate-raw o deflate-http) Hindi karaniwan na gamitin ito sa maliliit na device na konektado sa Internet of Things dahil nangangailangan ito ng tiyak na pagkonsumo ng mga mapagkukunan (memorya at oras ng pagproseso) na kadalasang kakaunti sa mga ganitong uri ng kagamitan. Hindi kinakailangang ipahiwatig na hindi ginagamit ang compression Accept-Encoding: identity dahil ang ganitong pangyayari ay isinasaalang-alang bilang default.

  • Accept-Language Nagpapahayag ng wikang maaaring gamitin sa sagot. Halimbawa, ang Espanyol ng Espanya ay tutukuyin bilang es-ES o ang Ingles ng Estados Unidos ng Amerika bilang en-US

  • Connection Ginagamit ito upang tukuyin kung ano ang dapat gawin sa koneksyon na naitatag sa pagitan ng kliyente (ang IoT device) at ng web server kapag natanggap na ang data. Karaniwang ginagamit kasama ang halaga close sa format Connection: close upang ipahiwatig na ang koneksyon ay dapat na sarado pagkatapos tumugon sa kliyente.

  • Content-Length Pinapayagan ka nitong ipahiwatig ang bilang ng mga byte na inookupahan ng bahagi ng kahilingan na naglalaman ng data, na kung saan ay ang isa pagkatapos ng mga header at pinaghihiwalay ng isang blangkong linya. Ito ay lubhang kapaki-pakinabang dahil ito ay nagsisilbi upang i-verify ang integridad ng impormasyong ipinadala; Kung hindi nito nasusukat ang idineklara, hindi ito iniimbak dahil itinuturing na hindi ito dumating nang tama. Karaniwang kinakailangan ito ng karamihan sa mga pampublikong IoT server.

  • Content-Type Nagsisilbi itong ipahiwatig ang MIME type kung saan naka-encode ang impormasyong ipinadala sa server. Karaniwang ginagamit ang mga uri text/html kapag ang data na ipinadala sa server ay ipinahayag bilang isang simpleng listahan ng mga halaga (tulad ng a=3.6&b=4.8) At application/jsonrequest (na magiging katumbas ng uri application/json na pinag-uusapan sa Accept) kapag ang isang mas kumplikadong istraktura ay kinakailangan, ngunit alinman sa mga sumusunod ay maaaring ipadala listahan ng mga uri ng MIME.

  • Cookie Ito ay ginagamit upang magdagdag ng isang session identifier kung saan mapanatili ang isang hanay ng mga paglilipat (query, tugon, query...) na mas kumplikado kaysa sa isang kahilingan kung saan magpadala ng ilang partikular na nauugnay na data ngunit nakuha sa iba't ibang oras.

  • Talaan ng Nilalaman
    • Referer URL na nagmula sa kahilingan ng POST, halimbawa ang web page kung saan ito ipinadala. Sa kaso ng paggamit para sa IoT, hindi ito nagdaragdag ng may-katuturang impormasyon dahil direktang ipinadala ang impormasyon, nang walang naunang pahina, kaya hindi ito madalas na ginagamit.

    • User-Agent Iniuulat ang device na gumagawa ng kahilingan. Sa normal na trapiko sa web, pinapayagan ng browser na ginagamit sa Internet of Things ang server na ipahiwatig ang uri ng elektronikong device na gumagawa ng kahilingan. Ang pagkilala sa sarili nito sa server ay nagbibigay-daan sa pagtugon na ma-format nang iba sa bawat kaso, halimbawa, pagbabalik ng isang kumplikadong web page sa isang browser at ilang data ng babala sa isang maliit na IoT device.

    Posibleng tumukoy ng listahan ng mga opsyon na pinaghihiwalay ng kuwit sa halip na isang halaga sa mga header upang ipahiwatig na maraming magkakaibang mga halaga ang sinusuportahan nang sabay-sabay. Ang mga halagang ito ay maaaring magkaroon ng pagkakasunud-sunod ng priyoridad na ipinahayag ayon sa isang kalidad na koepisyent q para sa bawat isa. Ang mga koepisyent ng kalidad ay pinaghihiwalay ng isang semicolon (;) at ang mga asterisk (*) ay maaari ding gamitin upang sumangguni sa anumang uri o subtype.

    Accept: text/plain,text/xml,application/json;q=0.8,text/*;q=0.9,application/json

    Sa nakaraang halimbawa ang priyoridad ng format JSON ang pinakamalaki (0.9) ay yaong sa plain text at yaong sa naka-format na text. XML, na nakakatugon sa pagtutukoy text/*, ay mas maliit (0.8) at pantay sa pagitan nila. Kung maaari, dapat tumugon ang server sa pamamagitan ng pag-encode ng tugon bilang JSON.

    Sa sumusunod na halimbawa ng isang mas kumpletong kahilingan sa POST, ang /iot/grabar_temperatura page ng server na tinatawag na polaridad.es ay ina-access gamit ang bersyon 1.1 ng HTTP protocol. Ang kliyente, na tinatawag na Sensoreitor-2000, ay nagpapadala ng naka-encode na data JSON, asahan ang tugon bilang plain text sa format UTF-8 gamit ang Espanyol mula sa Espanya nang hindi gumagamit ng compression, na, sa pamamagitan ng paraan, ay hindi kinakailangan upang ipahiwatig. Ang data na ipinadala sa server ay tumatagal ng hanggang 65 bytes. Kapag nagpapadala ng tugon, isasara ang koneksyon sa pagitan ng kliyente at server.

    Ang sumusunod na artikulo ay nagpapaliwanag kung paano i-configure ang MySQL database upang mag-imbak ng impormasyong ipinadala ng mga bagay na IoT

    Maaaring Na-miss Mo