我在嵌入式堆棧中實現了一個RESTful Web API,該嵌入式堆棧提供了一個沒有REST功能的Web服務器。確切地說,嵌入式堆棧是在MQX RT操作系統之上運行的RTCS,微控制器是飛思卡爾的Kinetis K60。我可以區分GET/POST/DELETE/PUT請求並獲取帶有參數的URL(比如說/ this/firstValue/that/secondValue/...)。嵌入式網絡服務器中的CRUD
我使用strtok來分離url的不同元素並作出決定。但我的代碼只是醜陋的,因爲它充滿了strcmp函數和if語句。我還需要檢查firstValue和secondValue的邊界(我可以在set/get函數中執行此操作,但每個參數的2個函數將會重複)。此外,我希望能夠添加參數而不用搞亂決策樹。
我有兩個問題:
- 你將如何使代碼很乾爽?
- 您是否認爲REST web服務適合通過網絡控制我的微控制器?你有這樣的例子嗎?我正在使用REST Web服務,因爲它提供了身份驗證(但由於我無法設置SSL套接字,因此無法保密),我認爲這是一個優雅的解決方案。
-
我評估了一些其他的解決方案:
- SNMP(snmpset/SNMPGET):它的工作而設立的MIB是一個真正的痛苦,因爲它是SNMPv2中,仍然沒有祕密。
- telnet服務器(我還沒有SSH解決方案):除了REST可能更容易從外部控制,我沒有看到任何優勢/缺點,我正在用捲曲測試它:)
- SOAP遠程程序調用(我只是不喜歡它)
- 任何其他的想法?我需要一些簡單的和可擴展的,因爲可能有多個目標需要控制。我的資源有限:s。我需要在某些時候保密,而且我希望在CyaSSL(一個嵌入式ssl實現)被移植到MQX時擁有它。他們說,這是怎麼回事下個月這樣的保密將不再是一個問題了,但如果你有其他的想法...
-
Emilien
爲什麼你想在設備上使用REST接口?難道你不能僅僅爲設備寫一個接口並且建立一個REST接口/ API /無論你使用Python和一些庫在單獨的服務器上調用它,應該爲你節省很多代碼和「醜陋」。 – Anders
是的,爲什麼不行,但我仍然必須自己做決策樹,當我考慮它時,它或多或少像SNMP MIB樹... – Emilien