在本博客系列的第一部分中,我們討論了物聯(lián)網(wǎng)(IoT) 的關(guān)鍵組成部分是分散式通信,并研究了網(wǎng)狀網(wǎng)絡(luò)如何消除實(shí)現(xiàn)工業(yè) 4.0 的許多障礙。一旦設(shè)備擁有強(qiáng)大的通信媒介,下一個挑戰(zhàn)就是讓所有設(shè)備都使用通用語言。
一種越來越流行的機(jī)制,設(shè)備可以通過這種機(jī)制在它們之間交換數(shù)據(jù)和發(fā)送命令,這是一種稱為 RESTful API 的框架。首先,讓我們拼出首字母縮略詞。REST 代表 Representational State Transfer,API 代表應(yīng)用程序編程接口。對于我們這些認(rèn)為自己是硬件人員而不是軟件或 Web 開發(fā)人員的人來說,讓我們探索一種可能過于簡單的方式來理解嵌入式電子環(huán)境中的 REST 和 API。讓我們從 API 開始。API 是許多 Web 服務(wù)發(fā)布的一種軟件機(jī)制,作為第三方開發(fā)人員以可控和定義明確的方式安全地與其系統(tǒng)交互的一種方式。例如,如果您曾經(jīng)使用過第三方 Twitter 應(yīng)用程序,那么您就間接地利用了 Twitter API。
REST 是一種機(jī)制,支持互聯(lián)網(wǎng)的設(shè)備可以通過這種機(jī)制通過來回傳輸看似統(tǒng)一資源定位器 (URL)的內(nèi)容來與其他設(shè)備或服務(wù)器通信。無需過于挑剔,在許多流行的基于 REST 的物聯(lián)網(wǎng)開發(fā)平臺 API 中找到的文檔通過技術(shù)上更合適的標(biāo)題統(tǒng)一資源標(biāo)識符或 URI 來引用它們。
好吧,讓我們將其付諸實(shí)踐。假設(shè)我們要創(chuàng)建一個網(wǎng)站。在那個網(wǎng)站上,我們想創(chuàng)建一個表單,允許我們通過互聯(lián)網(wǎng)遠(yuǎn)程打開和關(guān)閉 LED。
下面的代碼片段讓我們了解了 Post 方法的格式:
告訴您的設(shè)備要做什么!
打開 LED。
關(guān)閉 LED。
注意方法=“POST”。這是 RESTful API 利用的 HTTP 方法的示例。其他方法包括 GET、PUT、PATCH 和 DELETE。在許多提供 RESTful API 的物聯(lián)網(wǎng)嵌入式設(shè)備中,POST 和 GET 方法可能是最常用的兩種方法。POST方法用于向Web服務(wù)器推送數(shù)據(jù),GET是向Web服務(wù)器請求數(shù)據(jù)的方法。因此,在我們上面的示例中,POST 方法是一種機(jī)制,通過這種機(jī)制,最終用戶對網(wǎng)站表單的點(diǎn)擊被發(fā)送到 Web 服務(wù)器,而 Web 服務(wù)器又向 IoT 設(shè)備發(fā)出適當(dāng)?shù)拿睢?/p>
GET 請求呢?假設(shè)我們是連接到執(zhí)行器的端點(diǎn)設(shè)備。我們執(zhí)行機(jī)械動作的決定取決于遠(yuǎn)處的溫度。在這種情況下,端點(diǎn)將通過 GET 方法請求存儲在 Web 服務(wù)器上的溫度值。
下面的代碼片段讓我們了解了 GET 方法的格式:
WiFiClient客戶端;
const char DeviceToken[] = "MY_ID_TOKEN";
const String httpRequest1 = "GET /api/v1.6/devices/Arduino101_MBA/temperature/values?page_size=1&vertical-align: inherit;"> const String httpRequest2 = " HTTP/1.1rn"
"主機(jī):things.ubidots.comrn"
"連接:關(guān)閉rnrn";
出于所有意圖和目的,我們正在創(chuàng)建特制字符串,這些字符串將通過設(shè)備的 Wi-Fi 連接與網(wǎng)絡(luò)服務(wù)器進(jìn)行通信。這些字符串是 Web 服務(wù)器識別的 GET 請求,反過來,將以必須由端點(diǎn)解析的字符串中的數(shù)據(jù)響應(yīng)。響應(yīng) GET 請求時,JavaScript 對象表示法 (JSON) 等輕量級數(shù)據(jù)交換格式是從服務(wù)器向客戶端發(fā)送信息的首選方法。許多嵌入式平臺都有 JSON 庫來幫助解析。
在下面的代碼片段中,字符串變量行將保存服務(wù)器在遠(yuǎn)程處理 GET 請求后發(fā)回的 JSON 數(shù)據(jù)包。
字符串行 = "";
client.print(httpRequest1+DeviceToken+httpRequest2);
延遲(500);
while(client.connected()) {
line.concat(client.readStringUntil('n'));
}
為了提取網(wǎng)絡(luò)服務(wù)器傳遞給執(zhí)行器端點(diǎn)的溫度值,必須解析該字符串。
當(dāng)硬件工程師試圖描述 REST 時,可能有許多軟件和 Web 開發(fā)人員會睜大眼睛閱讀這篇文章。嵌入式工程師同行的重點(diǎn)是了解 RESTful API 正迅速成為物聯(lián)網(wǎng)設(shè)備通信的首選方法,因?yàn)樗鼈兏叨褥`活、可擴(kuò)展、可移植、能夠處理多種數(shù)據(jù)交換格式,可以說更容易開發(fā)和提供比簡單對象訪問協(xié)議 (SOAP) 等替代方案具有更好的性能。簡而言之,嵌入式工程師和固件開發(fā)人員至少應(yīng)具備該技術(shù)的應(yīng)用知識。當(dāng)與從事相關(guān)移動和網(wǎng)絡(luò)應(yīng)用程序工作的同事進(jìn)行設(shè)計(jì)討論時,這種理解將被證明是有用的。
現(xiàn)在就這些了,但請記得回來查看本系列博客的第三部分,屆時我們將討論邊緣計(jì)算和物聯(lián)網(wǎng)。
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2914文章
44985瀏覽量
377529 -
API
+關(guān)注
關(guān)注
2文章
1521瀏覽量
62462 -
Restful
+關(guān)注
關(guān)注
0文章
11瀏覽量
3554
發(fā)布評論請先 登錄
相關(guān)推薦
宇樹科技在物聯(lián)網(wǎng)方面
物聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?
IOT物聯(lián)網(wǎng)中臺:開啟智慧生活新篇章 物聯(lián)網(wǎng)平臺系統(tǒng),構(gòu)建智慧城市數(shù)據(jù)生態(tài) 智慧城鎮(zhèn)、物聯(lián)網(wǎng)、數(shù)據(jù)中臺
物聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)在物聯(lián)網(wǎng)中扮演的角色
![<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>數(shù)據(jù)</b>采集網(wǎng)關(guān)在<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>中扮演的角色](https://file1.elecfans.com//web2/M00/0B/51/wKgZomcx4AeABdztAADgy2-cZI8378.jpg)
socket 與 RESTful API 的使用
物聯(lián)網(wǎng)學(xué)習(xí)路線來啦!
物聯(lián)網(wǎng)和大數(shù)據(jù)的關(guān)系
基于物聯(lián)網(wǎng)的設(shè)備管理
![基于<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>的設(shè)備管理](https://file1.elecfans.com/web2/M00/B6/F7/wKgaomWCnqCAVALtAAAoP02go7w921.png)
物聯(lián)網(wǎng)僵尸網(wǎng)絡(luò)的歷史
什么是物聯(lián)網(wǎng)技術(shù)?
工控數(shù)據(jù)采集物聯(lián)網(wǎng)平臺是什么
物聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)詳細(xì)介紹
![<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>數(shù)據(jù)</b>采集網(wǎng)關(guān)詳細(xì)介紹](https://file1.elecfans.com//web2/M00/F8/03/wKgaomaDtoeAGqVjAABuegG8KQk908.jpg)
評論