...

จัดเก็บข้อมูลบนเว็บเซิร์ฟเวอร์ IoT โดยใช้คำขอ HTTP POST

จัดเก็บข้อมูลบนเว็บเซิร์ฟเวอร์ IoT โดยใช้คำขอ HTTP POST

จัดเก็บข้อมูลบนเว็บเซิร์ฟเวอร์ IoT โดยใช้คำขอ HTTP POST

Servidor-web-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POSTHTTP-POST-Servidor-web-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POSTBase-Datos-MySQL.-Servidor-web-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POSTLenguaje-PHP-Servidor-web-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POST

ตามที่อธิบายไว้ในบทความแรกของซีรีส์ จัดเก็บข้อมูลที่ได้รับจากอุปกรณ์ Internet of Thingsแม้ว่าข้อมูลที่บันทึกไว้จะจบลงที่เซิร์ฟเวอร์ก็ตาม MySQL o MariaDB และใช้ภาษา PHP เพื่อจัดการข้อมูลเหล่านี้ที่อินพุตและเอาต์พุต การไหลของข้อมูลระหว่างอุปกรณ์อิเล็กทรอนิกส์และฐานข้อมูลเกิดขึ้นโดยใช้ เว็บเซอร์ด กับคนที่คุณติดต่อสื่อสารตาม โปรโตคอล HTTP.

ในตอนต้นของคำจำกัดความของ โปรโตคอล HTTP มีการใช้งานที่เทียบเคียงได้กับที่อธิบายไว้ แต่ความจริงก็คือ สุดท้ายก็ยังไม่ถูกใช้ประโยชน์อย่างเต็มที่ด้วยเหตุผลหลายประการ ส่วนหนึ่งคือความปลอดภัย และส่วนหนึ่งเป็นเพราะไม่เคยมีความก้าวหน้าในการกำหนดโปรโตคอลที่เฉพาะเจาะจงหรือมีประสิทธิภาพมากขึ้น ดังนั้น ในปัจจุบันนี้โดยเฉพาะ ในเซิร์ฟเวอร์สาธารณะ สิ่งที่พบบ่อยที่สุดคือการใช้การเชื่อมต่อ HTTP อะไรที่ทำให้ คำขอโพสต์ ไปยังเซิร์ฟเวอร์เพื่อเก็บข้อมูลหรือ GET เพื่อกู้คืน โดยปกติแล้วจะแสดงหน้าเว็บที่นำเสนอและแม้แต่ที่คุณสามารถโต้ตอบได้

ข้อความพื้นฐานที่สุดที่ส่งไปยังเซิร์ฟเวอร์ในคำขอ HTTP POST รวมบรรทัดที่มีประเภทของคำขอ (POST) เส้นทางไปยังหน้าเว็บที่จะเก็บข้อมูลและเวอร์ชันของ โปรโตคอล HTTP; อีกบรรทัดหนึ่งที่มีชื่อโฮสต์ (ซึ่งอนุญาตให้เซิร์ฟเวอร์เสมือนบนเซิร์ฟเวอร์เดียวกันและ/หรือบนที่อยู่ IP เดียวกัน) และสุดท้ายอีกบรรทัดหนึ่งประกอบด้วยข้อมูลที่บันทึกไว้ แยกจากกันด้วยเครื่องหมาย & และจากบรรทัดก่อนหน้าทีละบรรทัด ว่างเปล่า.

ในตัวอย่างด้านบน เซิร์ฟเวอร์ชื่อ polaridad.es จะมีเพจใน /iot/grabar_temperatura เพื่อจัดการข้อมูลโดยใช้เวอร์ชัน 1.1 ของ โปรโตคอล HTTP

จะเห็นได้ว่ามีการใช้เครื่องหมาย & สองอันซึ่งแสดงว่ามีการจัดเก็บสามฟิลด์ ชื่อของฟิลด์ต่างๆ จะอยู่ทางด้านซ้ายของเครื่องหมายเท่ากับ และใช้ตัวอักษรเพียงสองตัวเท่านั้นในการกำหนดฟิลด์เหล่านั้น เป็นชื่อของฟิลด์ (หรือตัวแปร หากคุณต้องการ) ของคำขอ HTTP ไม่เกี่ยวข้องกับข้อมูลในฐานข้อมูล ไม่สำคัญอย่างยิ่งที่จะใช้ข้อความอธิบายและมักจะเลือกชื่อย่อ (ช่องที่มีเลขคู่) เพื่อบันทึกข้อความในการสื่อสารกับเซิร์ฟเวอร์และเร่งกระบวนการส่งข้อมูลให้เร็วขึ้น

ข้อมูลที่อุปกรณ์ IoT ปกติส่งไปยังเซิร์ฟเวอร์จะเป็นประเภทตัวเลข ซึ่งส่วนใหญ่เป็นจำนวนเต็มและทศนิยมธรรมดา เมื่อค่าถูกส่งในรูปแบบข้อความ เช่นเดียวกับกรณีที่มีตัวแปร "ne" ในตัวอย่าง สถานการณ์ที่ไม่พึงประสงค์อาจเกิดขึ้นซึ่งสามารถแก้ไขได้ ขึ้นอยู่กับแต่ละกรณี โดยประสบความสำเร็จและง่ายดายไม่มากก็น้อย ในโอกาสนี้ เครื่องหมายบวก (+) ใช้เพื่อแยกคำ โดยแทนที่ช่องว่างที่อาจจะทำให้คำเปลี่ยนแปลงไป คำขอโพสต์. วิธีทั่วไปในการส่งข้อมูลที่แก้ไขกรณีส่วนใหญ่คือการระบุรหัสเลขฐานสิบหกของอักขระ นำหน้าด้วยเครื่องหมายเปอร์เซ็นต์ (%) ตามหลักเหตุผล ไม่แนะนำให้ใช้ทรัพยากรนี้ ยกเว้นเมื่อสิ่งที่เข้ารหัสนั้นมีปัญหาเนื่องจาก ความยาวของสิ่งที่ ถูกส่งเพิ่มขึ้น ซึ่งโดยทั่วไปต้องใช้ทรัพยากรมากขึ้น แม้ว่าจะมีขนาดเล็กมากก็ตาม

แม้ว่าจะสามารถดำเนินการได้ก็ตาม เว็บเซอร์ด สำหรับ Internet of Things เฉพาะข้อมูลจากตัวอย่างก่อนหน้านี้เซิร์ฟเวอร์จำนวนมากโดยเฉพาะเซิร์ฟเวอร์สาธารณะให้เพิ่มข้อมูลอื่น ๆ ลงในแบบสอบถาม POST (น่าเสียดายที่ไม่ได้จำกัดอยู่เพียงโปรโตคอลเสมอไป) ตัวอย่างด้านล่างสอดคล้องกับคำขอโพสต์ที่ร้องขอโดย well - เซิร์ฟเวอร์ที่รู้จัก สาธารณะสำหรับอินเทอร์เน็ตของสิ่งต่าง ๆ ธิงสปีค.

นอกเหนือจากข้อมูลส่วนบุคคลบางอย่าง เช่น X-THINGSPEAKAPIKEY (และซึ่งสอดคล้องกับตัวระบุของลูกค้าแต่ละราย) ในตัวอย่างก่อนหน้านี้ คุณจะเห็นว่ายังมีส่วนหัวอื่นที่เพิ่มข้อมูลเพิ่มเติมให้กับคำขอ

วิธีใช้ส่วนหัวในไฟล์ คำขอโพสต์ เพียงประกอบด้วยการเขียนชื่อ เครื่องหมายโคลอน (:) ช่องว่าง และค่าที่คุณต้องการกำหนด

เพื่อทดสอบคำขอ POST ไปยังเว็บเซิร์ฟเวอร์ก่อนที่จะเสร็จสิ้นการกำหนดค่าส่วนประกอบอื่นๆ คุณสามารถสร้างการเชื่อมต่อกับเซิร์ฟเวอร์และส่งข้อมูลด้วยตนเองได้ ตัวอย่างเช่น บนคอมพิวเตอร์ Linux ก็เพียงพอแล้วที่จะใช้ telnet polaridad.es 80 โดยที่ polaridad.es คือชื่อของเซิร์ฟเวอร์ และ 80 คือหมายเลขพอร์ตที่บริการตอบสนอง HTTP.

Conectar-al-servidor-web-polaridad.es-usando-telnet-para-almacenar-datos-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POST

เครื่องมือข้ามแพลตฟอร์มสามารถใช้บน Linux, Windows หรือ OS ฉาบซึ่งถูกพูดถึงในบทความ ควบคุมอุปกรณ์อนุกรม UART จากคอมพิวเตอร์เพื่อทำการเชื่อมต่อโดยไม่ต้องใช้คอนโซล

Conectar-al-servidor-web-polaridad.es-usando-PuTTY-para-almacenar-datos-IoT Almacenar datos en un servidor web IoT usando peticiones HTTP POST

ในครั้งต่อไป รายการส่วนหัว HTTP มีส่วนใหญ่ที่สามารถเป็นประโยชน์สำหรับ คำขอโพสต์ มี เว็บเซอร์ด สำหรับอินเทอร์เน็ตของสิ่งต่าง ๆ

  • Accept ใช้เพื่อระบุประเภท MIME ว่าคำขอคาดหวังว่าเซิร์ฟเวอร์จะใช้ในการตอบกลับ มันแสดงออกมาเป็น tipo/subtipo ซึ่งสามารถสรุปได้โดยใช้เครื่องหมายดอกจัน (*) เป็นเครื่องหมายตัวแทน เช่น */* เพื่ออ้างถึงใด ๆ หรือ tipo/* เพื่ออ้างถึงประเภทย่อยทั้งหมดของ tipo

    ที่ใช้กันมากที่สุดคือ:

    • text/plain แม้ว่าจะเป็นพื้นฐานที่สุด แต่ก็ถูกใช้มากที่สุดเช่นกัน คาดหวังให้เซิร์ฟเวอร์ส่งคืนข้อความตอบกลับธรรมดา (ธรรมดา) ที่เพียงพอที่จะแจ้งว่าธุรกรรมนั้นถูกต้อง และส่วนใหญ่เพิ่มข้อมูลเสริม เช่น หมายเลขคำสั่งซื้อของข้อมูลที่บันทึกไว้ ผลลัพธ์ของการเปรียบเทียบ วันที่ของ เซิร์ฟเวอร์...

    • application/xml o text/xml รอให้เซิร์ฟเวอร์ตอบสนองต่อคำขอในรูปแบบ XML. ความหมายของการเลือก text แทนที่ application ช่วยให้อ่าน "มนุษย์" (เทียบกับ "อัตโนมัติ") ได้ง่ายขึ้น ความเป็นคู่นี้จะปรากฏในผู้อื่น ประเภทไมม์ แต่แนวโน้มในอนาคตของมาตรฐานคือการชอบ application ด้านหน้าของ text รูปแบบ XML ช่วยให้การตอบสนองที่มีข้อมูลจำนวนมากมีโครงสร้างที่มั่นคงมาก ข้อเสียคือ จะเพิ่มความสามารถพิเศษให้กับข้อมูลเน็ตจำนวนมาก ซึ่งทำให้การตอบสนองกินเวลาเกินความจำเป็น จึงต้องใช้แบนด์วิธมากขึ้นและอาจจะมากกว่านั้น หน่วยความจำในอุปกรณ์ IoT เพื่อประมวลผล

    • text/html ใช้เมื่อมีการตอบกลับของเซิร์ฟเวอร์ HTML เข้ารหัสเป็นข้อความธรรมดา (ข้อความธรรมดา) โดยปกติจะจัดรูปแบบการตอบกลับ เนื่องจากเป็นเรื่องเกี่ยวกับการจัดเก็บข้อมูลและการตอบสนองจะไปถึงอุปกรณ์ขนาดเล็กที่ไม่มีทรัพยากรมากมาย การใช้ประเภทนี้จึงไม่เป็นเรื่องปกติ

    • application/xhtml+xml โดยพื้นฐานแล้วมันเป็นเวอร์ชัน XHTML (HTML ในขณะที่ XML ถูกต้อง) ของข้อมูลในส่วนก่อนหน้า

    • application/json มีการใช้มากที่สุดเมื่อการตอบสนองของเซิร์ฟเวอร์มีข้อมูลหลายรายการ รวมถึงโครงสร้างที่ซับซ้อนไม่มากก็น้อย รูปแบบ JSON แบ่งปันด้วยรูปแบบ XML โครงสร้างที่มั่นคงและเพิ่มข้อดีของการกระชับในข้อความที่เพิ่มโดยโครงสร้าง

  • Accept-Charset กำหนดการเข้ารหัสข้อความที่ร้องขอเพื่อใช้ในการตอบกลับ ในการเข้ารหัสอักขระละติน UTF-8,สมบูรณ์ที่สุด, ISO-8859 15ซึ่งรวมถึงเครื่องหมายยูโร (€) และ ISO-8859 1ซึ่งเป็นพื้นฐานที่สุด

  • Accept-Encoding ระบุรูปแบบตามที่สามารถเข้ารหัสการตอบสนองของเซิร์ฟเวอร์ได้ โดยทั่วไปจะทำหน้าที่ระบุประเภทของการบีบอัด บางส่วนที่พบบ่อยที่สุดคือ gzip deflate (ซึ่งสามารถระบุรายละเอียดเพิ่มเติมได้ด้วย deflate-raw o deflate-http) ไม่ใช่เรื่องปกติที่จะใช้ในอุปกรณ์ขนาดเล็กที่เชื่อมต่อกับ Internet of Things เนื่องจากต้องใช้ทรัพยากรบางอย่าง (หน่วยความจำและเวลาประมวลผล) ซึ่งมักมีน้อยในอุปกรณ์ประเภทนี้ ไม่จำเป็นต้องระบุว่าไม่ได้ใช้การบีบอัดด้วย Accept-Encoding: identity เนื่องจากพฤติการณ์ดังกล่าวถือเป็นค่าเริ่มต้น

  • Accept-Language เป็นการแสดงออกถึงภาษาที่สามารถนำมาใช้ในการตอบได้ ตัวอย่างเช่น ภาษาสเปนของสเปนจะถูกระบุเป็น es-ES หรือภาษาอังกฤษของประเทศสหรัฐอเมริกาเป็น en-US

  • Connection ใช้เพื่อระบุสิ่งที่ควรทำกับการเชื่อมต่อที่สร้างขึ้นระหว่างไคลเอนต์ (อุปกรณ์ IoT) และ เว็บเซอร์ด เมื่อได้รับข้อมูลแล้ว โดยทั่วไปจะใช้กับค่า close ในรูปแบบ Connection: close เพื่อระบุว่าควรปิดการเชื่อมต่อหลังจากตอบกลับไคลเอนต์

  • Content-Length ช่วยให้คุณสามารถระบุจำนวนไบต์ที่ถูกครอบครองโดยส่วนของคำขอที่มีข้อมูล ซึ่งเป็นที่อยู่หลังส่วนหัวและคั่นด้วยบรรทัดว่าง มันมีประโยชน์มากเพราะทำหน้าที่ตรวจสอบความสมบูรณ์ของข้อมูลที่ส่งไป หากไม่ได้วัดสิ่งที่ประกาศไว้จะไม่เก็บไว้เนื่องจากถือว่าได้มาอย่างไม่ถูกต้อง โดยปกติแล้วเซิร์ฟเวอร์ IoT สาธารณะส่วนใหญ่ต้องการสิ่งนี้

  • Content-Type มันทำหน้าที่เพื่อบ่งบอกถึง ประเภท MIME ซึ่งข้อมูลที่ส่งไปยังเซิร์ฟเวอร์จะถูกเข้ารหัส โดยทั่วไปจะใช้ประเภท text/html เมื่อข้อมูลที่ส่งไปยังเซิร์ฟเวอร์แสดงเป็นรายการค่าอย่างง่าย (เช่น a=3.6&b=4.8) และ application/jsonrequest (ซึ่งจะเทียบเท่ากับประเภท application/json ที่กำลังพูดถึงอยู่ใน Accept) เมื่อจำเป็นต้องมีโครงสร้างที่ซับซ้อนมากขึ้น แต่สามารถส่งสิ่งต่อไปนี้ได้ รายการประเภท MIME.

  • Cookie ใช้เพื่อเพิ่มตัวระบุเซสชันเพื่อรักษาห่วงโซ่การถ่ายโอน (แบบสอบถาม การตอบสนอง แบบสอบถาม...) ที่ซับซ้อนมากกว่าคำขอเดียวที่จะส่งข้อมูลที่เกี่ยวข้องบางอย่าง แต่ได้รับในเวลาต่างกัน

  • สารบัญ
    • Referer URL ที่เป็นต้นตอของคำขอ POST เช่น หน้าเว็บที่ส่งคำขอดังกล่าว ในกรณีที่ใช้สำหรับ IoT จะไม่เพิ่มข้อมูลที่เกี่ยวข้องเนื่องจากข้อมูลจะถูกส่งโดยตรงโดยไม่มีหน้าก่อนหน้าจึงไม่ค่อยได้ใช้

    • User-Agent รายงานอุปกรณ์ที่ทำการร้องขอ ในการเข้าชมเว็บปกติ เบราว์เซอร์ที่ใช้ใน Internet of Things ช่วยให้เซิร์ฟเวอร์สามารถระบุประเภทของอุปกรณ์อิเล็กทรอนิกส์ที่ส่งคำขอได้ การระบุตัวเองไปยังเซิร์ฟเวอร์ช่วยให้การตอบสนองมีรูปแบบที่แตกต่างกันในแต่ละกรณี เช่น การส่งคืนหน้าเว็บที่ซับซ้อนไปยังเบราว์เซอร์ และข้อมูลคำเตือนเล็กน้อยไปยังอุปกรณ์ IoT ขนาดเล็ก

    คุณสามารถระบุรายการตัวเลือกที่คั่นด้วยเครื่องหมายจุลภาคแทนค่าเดียวในส่วนหัวเพื่อระบุว่ารองรับค่าที่แตกต่างกันหลายค่าพร้อมกัน ค่าเหล่านี้สามารถมีลำดับความสำคัญที่แสดงตามค่าสัมประสิทธิ์คุณภาพ q สำหรับแต่ละค่า ค่าสัมประสิทธิ์คุณภาพคั่นด้วยเครื่องหมายอัฒภาค (;) และอาจใช้เครื่องหมายดอกจัน (*) เพื่ออ้างถึงประเภทหรือประเภทย่อยใดๆ ก็ได้

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

    ในตัวอย่างก่อนหน้านี้ ลำดับความสำคัญของรูปแบบ JSON ที่ใหญ่ที่สุด (0.9) คือข้อความธรรมดาและข้อความที่จัดรูปแบบ XMLซึ่งตรงตามข้อกำหนด text/*มีขนาดเล็กกว่า (0.8) และเท่ากันระหว่างกัน หากเป็นไปได้ เซิร์ฟเวอร์ควรตอบสนองด้วยการเข้ารหัสการตอบสนองเป็น JSON.

    ในตัวอย่างต่อไปนี้ของคำขอ POST ที่สมบูรณ์ยิ่งขึ้น หน้า /iot/grabar_temperatura ของเซิร์ฟเวอร์ชื่อ polaridad.es เข้าถึงได้โดยใช้เวอร์ชัน 1.1 ของโปรโตคอล HTTP ไคลเอ็นต์ที่เรียกว่า Sensoreitor-2000 จะส่งข้อมูลที่เข้ารหัสเข้ามา JSONคาดหวังการตอบกลับในรูปแบบข้อความธรรมดา UTF-8 ใช้ภาษาสเปนจากสเปนโดยไม่ต้องใช้การบีบอัดซึ่งไม่จำเป็นต้องระบุ ข้อมูลที่ส่งไปยังเซิร์ฟเวอร์มีขนาดสูงสุด 65 ไบต์ เมื่อส่งการตอบกลับ การเชื่อมต่อระหว่างไคลเอนต์และเซิร์ฟเวอร์จะถูกปิด

    บทความต่อไปนี้จะอธิบาย วิธีกำหนดค่าฐานข้อมูล MySQL เพื่อจัดเก็บข้อมูลที่ส่งโดยออบเจ็กต์ IoT

    แสดงความคิดเห็น

    คุณอาจจะพลาด

    ตัวเร่ง Seraphiniteเพิ่มประสิทธิภาพโดย Seraphinite Accelerator
    เปิดความเร็วสูงของไซต์ให้น่าสนใจสำหรับผู้คนและเครื่องมือค้นหา