嵌入式Web服务器中的CRUD

时间:2012-10-19 09:43:42

标签: c rest embedded crud microcontroller

我正在嵌入式堆栈中实现RESTful Web API,它提供了一个没有REST功能的Web服务器。确切地说,嵌入式堆栈是在MQX RT操作系统之上运行的RTCS,微控制器是飞思卡尔的Kinetis K60。我能够区分GET / POST / DELETE / PUT请求并获取带参数的url(比方说/ this / firstValue / that / secondValue /...).

我使用strtok分隔网址的不同元素并做出决定。但是我的代码很难看,因为它充满了strcmp函数和if语句。我还需要检查firstValue和secondValue的边界(我可以在set / get函数中做,但每个参数的2个函数将重复)。此外,我希望能够在不涉及决策树的情况下添加参数。

我有两个问题:

  • 你如何让代码变得干爽和干燥?
  • 您认为REST网络服务适合通过网络控制我的微控制器吗?你有这样的例子吗?我正在使用REST Web服务,因为它提供身份验证(但不保密,因为我还无法设置SSL套接字),我认为这是一个优雅的解决方案。
    我评估了其他一些解决方案   
  • SNMP(snmpset / snmpget):它有效但设置MIB真的很痛苦,因为它是SNMPv2,所以仍然没有保密。
  •   
  • telnet服务器(我还没有SSH解决方案):除了REST可能更容易从外部控制之外我没有看到任何优点/缺点,我正在用curl测试它:)
  •   
  • SOAP远程过程调用(我只是不喜欢它)
  •   
  • 还有其他想法吗?我需要一些简单且可扩展的东西,因为可能有多个目标需要控制。我的资源有限:s。我需要在某些时候保密,而且我期望在CyaSSL(嵌入式ssl实现)移植到MQX时拥有它。他们说下个月会发生这样的事情,所以保密不再是问题,但如果你有其他想法......

-
Emilien

1 个答案:

答案 0 :(得分:0)

REST是一种架构模式,所以我猜你的意思是你的服务器提供HTTP。

资源是'可以命名的任何数据'。例如嵌入式设备上的LED可能是'/ leds / led3'的URI您可以使用标准PUT请求更改它所拥有的数据(其状态,rgb led?等),GET应返回其当前状态。

对于编码,如果内存允许尽可能简单地进行路径查找,则通用树结构可能是明智的。使用叶子上的数据和函数指针(模拟对象)