在本博客系列的第一部分中,我們討論了物聯(lián)網(wǎng)(IoT) 的關(guān)鍵組成部分是分散式通信,并研究了網(wǎng)狀網(wǎng)絡(luò)如何消除實(shí)現(xiàn)工業(yè) 4.0 的許多障礙。一旦設(shè)備擁有強(qiáng)大的通信媒介,下一個(gè)挑戰(zhàn)就是讓所有設(shè)備都使用通用語(yǔ)言。
一種越來(lái)越流行的機(jī)制,設(shè)備可以通過(guò)這種機(jī)制在它們之間交換數(shù)據(jù)和發(fā)送命令,這是一種稱為 RESTful API 的框架。首先,讓我們拼出首字母縮略詞。REST 代表 Representational State Transfer,API 代表應(yīng)用程序編程接口。對(duì)于我們這些認(rèn)為自己是硬件人員而不是軟件或 Web 開(kāi)發(fā)人員的人來(lái)說(shuō),讓我們探索一種可能過(guò)于簡(jiǎn)單的方式來(lái)理解嵌入式電子環(huán)境中的 REST 和 API。讓我們從 API 開(kāi)始。API 是許多 Web 服務(wù)發(fā)布的一種軟件機(jī)制,作為第三方開(kāi)發(fā)人員以可控和定義明確的方式安全地與其系統(tǒng)交互的一種方式。例如,如果您曾經(jīng)使用過(guò)第三方 Twitter 應(yīng)用程序,那么您就間接地利用了 Twitter API。
REST 是一種機(jī)制,支持互聯(lián)網(wǎng)的設(shè)備可以通過(guò)這種機(jī)制通過(guò)來(lái)回傳輸看似統(tǒng)一資源定位器 (URL)的內(nèi)容來(lái)與其他設(shè)備或服務(wù)器通信。無(wú)需過(guò)于挑剔,在許多流行的基于 REST 的物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái) API 中找到的文檔通過(guò)技術(shù)上更合適的標(biāo)題統(tǒng)一資源標(biāo)識(shí)符或 URI 來(lái)引用它們。
好吧,讓我們將其付諸實(shí)踐。假設(shè)我們要?jiǎng)?chuàng)建一個(gè)網(wǎng)站。在那個(gè)網(wǎng)站上,我們想創(chuàng)建一個(gè)表單,允許我們通過(guò)互聯(lián)網(wǎng)遠(yuǎn)程打開(kāi)和關(guān)閉 LED。
下面的代碼片段讓我們了解了 Post 方法的格式:
告訴您的設(shè)備要做什么!
打開(kāi) 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ù)器請(qǐng)求數(shù)據(jù)的方法。因此,在我們上面的示例中,POST 方法是一種機(jī)制,通過(guò)這種機(jī)制,最終用戶對(duì)網(wǎng)站表單的點(diǎn)擊被發(fā)送到 Web 服務(wù)器,而 Web 服務(wù)器又向 IoT 設(shè)備發(fā)出適當(dāng)?shù)拿睢?/p>
GET 請(qǐng)求呢?假設(shè)我們是連接到執(zhí)行器的端點(diǎn)設(shè)備。我們執(zhí)行機(jī)械動(dòng)作的決定取決于遠(yuǎn)處的溫度。在這種情況下,端點(diǎn)將通過(guò) GET 方法請(qǐng)求存儲(chǔ)在 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)建特制字符串,這些字符串將通過(guò)設(shè)備的 Wi-Fi 連接與網(wǎng)絡(luò)服務(wù)器進(jìn)行通信。這些字符串是 Web 服務(wù)器識(shí)別的 GET 請(qǐng)求,反過(guò)來(lái),將以必須由端點(diǎn)解析的字符串中的數(shù)據(jù)響應(yīng)。響應(yīng) GET 請(qǐng)求時(shí),JavaScript 對(duì)象表示法 (JSON) 等輕量級(jí)數(shù)據(jù)交換格式是從服務(wù)器向客戶端發(fā)送信息的首選方法。許多嵌入式平臺(tái)都有 JSON 庫(kù)來(lái)幫助解析。
在下面的代碼片段中,字符串變量行將保存服務(wù)器在遠(yuǎn)程處理 GET 請(qǐng)求后發(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 時(shí),可能有許多軟件和 Web 開(kāi)發(fā)人員會(huì)睜大眼睛閱讀這篇文章。嵌入式工程師同行的重點(diǎn)是了解 RESTful API 正迅速成為物聯(lián)網(wǎng)設(shè)備通信的首選方法,因?yàn)樗鼈兏叨褥`活、可擴(kuò)展、可移植、能夠處理多種數(shù)據(jù)交換格式,可以說(shuō)更容易開(kāi)發(fā)和提供比簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (SOAP) 等替代方案具有更好的性能。簡(jiǎn)而言之,嵌入式工程師和固件開(kāi)發(fā)人員至少應(yīng)具備該技術(shù)的應(yīng)用知識(shí)。當(dāng)與從事相關(guān)移動(dòng)和網(wǎng)絡(luò)應(yīng)用程序工作的同事進(jìn)行設(shè)計(jì)討論時(shí),這種理解將被證明是有用的。
現(xiàn)在就這些了,但請(qǐng)記得回來(lái)查看本系列博客的第三部分,屆時(shí)我們將討論邊緣計(jì)算和物聯(lián)網(wǎng)。
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2927文章
45847瀏覽量
387698 -
API
+關(guān)注
關(guān)注
2文章
1559瀏覽量
63505 -
Restful
+關(guān)注
關(guān)注
0文章
11瀏覽量
3645
發(fā)布評(píng)論請(qǐng)先 登錄
物聯(lián)網(wǎng)工程師為什么要學(xué)Linux?
智慧消防物聯(lián)網(wǎng)平臺(tái)
蜂窩物聯(lián)網(wǎng)怎么選
為什么選擇蜂窩物聯(lián)網(wǎng)
宇樹(shù)科技在物聯(lián)網(wǎng)方面
物聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?
IOT物聯(lián)網(wǎng)中臺(tái):開(kāi)啟智慧生活新篇章 物聯(lián)網(wǎng)平臺(tái)系統(tǒng),構(gòu)建智慧城市數(shù)據(jù)生態(tài) 智慧城鎮(zhèn)、物聯(lián)網(wǎng)、數(shù)據(jù)中臺(tái)
物聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)在物聯(lián)網(wǎng)中扮演的角色

socket 與 RESTful API 的使用
物聯(lián)網(wǎng)學(xué)習(xí)路線來(lái)啦!
物聯(lián)網(wǎng)和大數(shù)據(jù)的關(guān)系
使用API Post測(cè)試阿里云物聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)

基于物聯(lián)網(wǎng)的設(shè)備管理

什么是物聯(lián)網(wǎng)技術(shù)?
物聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)詳細(xì)介紹

評(píng)論