在本博客系列的第一部分中,我們討論了物聯(lián)網(wǎng)(IoT) 的關(guān)鍵組成部分是分散式通信,并研究了網(wǎng)狀網(wǎng)絡(luò)如何消除實現(xiàn)工業(yè) 4.0 的許多障礙。一旦設(shè)備擁有強大的通信媒介,下一個挑戰(zhàn)就是讓所有設(shè)備都使用通用語言。
一種越來越流行的機制,設(shè)備可以通過這種機制在它們之間交換數(shù)據(jù)和發(fā)送命令,這是一種稱為 RESTful API 的框架。首先,讓我們拼出首字母縮略詞。REST 代表 Representational State Transfer,API 代表應(yīng)用程序編程接口。對于我們這些認為自己是硬件人員而不是軟件或 Web 開發(fā)人員的人來說,讓我們探索一種可能過于簡單的方式來理解嵌入式電子環(huán)境中的 REST 和 API。讓我們從 API 開始。API 是許多 Web 服務(wù)發(fā)布的一種軟件機制,作為第三方開發(fā)人員以可控和定義明確的方式安全地與其系統(tǒng)交互的一種方式。例如,如果您曾經(jīng)使用過第三方 Twitter 應(yīng)用程序,那么您就間接地利用了 Twitter API。
REST 是一種機制,支持互聯(lián)網(wǎng)的設(shè)備可以通過這種機制通過來回傳輸看似統(tǒng)一資源定位器 (URL)的內(nèi)容來與其他設(shè)備或服務(wù)器通信。無需過于挑剔,在許多流行的基于 REST 的物聯(lián)網(wǎng)開發(fā)平臺 API 中找到的文檔通過技術(shù)上更合適的標題統(tǒng)一資源標識符或 URI 來引用它們。
好吧,讓我們將其付諸實踐。假設(shè)我們要創(chuàng)建一個網(wǎng)站。在那個網(wǎng)站上,我們想創(chuàng)建一個表單,允許我們通過互聯(lián)網(wǎng)遠程打開和關(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 方法是一種機制,通過這種機制,最終用戶對網(wǎng)站表單的點擊被發(fā)送到 Web 服務(wù)器,而 Web 服務(wù)器又向 IoT 設(shè)備發(fā)出適當?shù)拿睢?/p>
GET 請求呢?假設(shè)我們是連接到執(zhí)行器的端點設(shè)備。我們執(zhí)行機械動作的決定取決于遠處的溫度。在這種情況下,端點將通過 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"
"主機:things.ubidots.comrn"
"連接:關(guān)閉rnrn";
出于所有意圖和目的,我們正在創(chuàng)建特制字符串,這些字符串將通過設(shè)備的 Wi-Fi 連接與網(wǎng)絡(luò)服務(wù)器進行通信。這些字符串是 Web 服務(wù)器識別的 GET 請求,反過來,將以必須由端點解析的字符串中的數(shù)據(jù)響應(yīng)。響應(yīng) GET 請求時,JavaScript 對象表示法 (JSON) 等輕量級數(shù)據(jù)交換格式是從服務(wù)器向客戶端發(fā)送信息的首選方法。許多嵌入式平臺都有 JSON 庫來幫助解析。
在下面的代碼片段中,字符串變量行將保存服務(wù)器在遠程處理 GET 請求后發(fā)回的 JSON 數(shù)據(jù)包。
字符串行 = "";
client.print(httpRequest1+DeviceToken+httpRequest2);
延遲(500);
while(client.connected()) {
line.concat(client.readStringUntil('n'));
}
為了提取網(wǎng)絡(luò)服務(wù)器傳遞給執(zhí)行器端點的溫度值,必須解析該字符串。
當硬件工程師試圖描述 REST 時,可能有許多軟件和 Web 開發(fā)人員會睜大眼睛閱讀這篇文章。嵌入式工程師同行的重點是了解 RESTful API 正迅速成為物聯(lián)網(wǎng)設(shè)備通信的首選方法,因為它們高度靈活、可擴展、可移植、能夠處理多種數(shù)據(jù)交換格式,可以說更容易開發(fā)和提供比簡單對象訪問協(xié)議 (SOAP) 等替代方案具有更好的性能。簡而言之,嵌入式工程師和固件開發(fā)人員至少應(yīng)具備該技術(shù)的應(yīng)用知識。當與從事相關(guān)移動和網(wǎng)絡(luò)應(yīng)用程序工作的同事進行設(shè)計討論時,這種理解將被證明是有用的。
現(xiàn)在就這些了,但請記得回來查看本系列博客的第三部分,屆時我們將討論邊緣計算和物聯(lián)網(wǎng)。
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2900文章
44079瀏覽量
370275 -
API
+關(guān)注
關(guān)注
2文章
1472瀏覽量
61750 -
Restful
+關(guān)注
關(guān)注
0文章
11瀏覽量
3525
發(fā)布評論請先 登錄
相關(guān)推薦
評論