我在嵌入式堆栈中实现了一个 RESTful Web API,它提供了一个没有 REST 功能的网络服务器。准确地说,嵌入式堆栈是运行在 MQX RT 操作系统之上的 RTCS,微控制器是飞思卡尔的 Kinetis K60。我能够区分 GET/POST/DELETE/PUT 请求并获取带有参数的 url(比如说 /this/firstValue/that/secondValue/...)。
我使用 strtok 来分隔 url 的不同元素并做出决定。但是我的代码很丑,因为它充满了 strcmp 函数和 if 语句。我还需要检查 firstValue 和 secondValue 的界限(我可以在 set/get 函数中执行此操作,但每个参数的 2 个函数将是重复的)。此外,我希望能够添加参数而不会弄乱决策树。
我有两个问题:
- 你如何让代码变得又好又干?
- 您认为 REST Web 服务适合通过网络控制我的微控制器吗?你有这样的例子吗?我正在使用 REST Web 服务,因为它提供身份验证(但没有保密,因为我还不能设置 SSL 套接字),我认为这是一个优雅的解决方案。
-
我评估了其他一些解决方案:
- SNMP (snmpset/snmpget):它可以工作,但是设置 MIB 真的很痛苦,而且因为它是 SNMPv2,所以仍然没有保密性。
- telnet 服务器(我还没有 SSH 解决方案):除了 REST 可能更容易从外部控制之外,我没有看到任何优点/缺点,我正在使用 curl 对其进行测试:)
- SOAP 远程过程调用(我就是不喜欢)
- 还有其他想法吗?我需要一些简单且可扩展的东西,因为可以控制多个目标。我的资源有限:s。在某些时候我需要保密,并且我希望在将 CyaSSL(嵌入式 ssl 实现)移植到 MQX 时拥有它。他们说这将在下个月发生,所以保密将不再是问题,但如果你有其他想法......
——
艾米连