2

REST機能のないWebサーバーを提供する組み込みスタックにRESTful Web APIを実装しています。正確には、組み込みスタックは MQX RT オペレーティング システム上で実行される RTCS であり、マイクロコントローラーは Freescale の Kinetis K60 です。GET/POST/DELETE/PUT リクエストを区別し、パラメーターを使用して URL を取得できます (/this/firstValue/that/secondValue/... としましょう)。

strtok を使用して、URL のさまざまな要素を分離し、決定を下します。しかし、私のコードは、strcmp 関数と if ステートメントでいっぱいなので、醜いだけです。また、firstValue と secondValue の境界を確認する必要があります (これは set/get 関数で行うことができますが、各パラメーターに対して 2 つの関数が繰り返されます)。さらに、決定木をいじらずにパラメーターを追加できるようにしたいと考えています。

2 つの質問があります。

  • どのようにすれば、コードを素晴らしくドライにできますか?
  • ネットワーク経由でマイクロコントローラを制御するには、REST Web サービスが適切だと思いますか? そのような例はありますか?認証を提供するため(ただし、SSLソケットをまだセットアップできないため、秘密はありません)、REST Webサービスを使用しています。これはエレガントなソリューションだと思います。
    他のいくつかのソリューションを評価しました:
  • SNMP (snmpset/snmpget): 機能しましたが、MIB の設定は本当に大変でした。SNMPv2 であるため、まだ機密性はありません。
  • telnet サーバー (私はまだ SSH ソリューションを持っていません): REST はおそらく外部から制御する方が簡単であることを除けば、利点/欠点は見当たりません。curl でテストしています:)
  • SOAP リモート プロシージャ コール (気に入らないだけです)
  • 他のアイデアはありますか?制御するターゲットが複数ある可能性があるため、シンプルでスケーラブルなものが必要です。リソースが限られています:s。ある時点で機密性が必要になり、CyaSSL (組み込みの ssl 実装) が MQX に移植されたときに機密性が確保されることを期待しています。彼らはそれが来月行われるので秘密はもう問題にならないだろうと言いましたが、他にアイデアがあれば...

--
エミリエン

4

1 に答える 1

0

REST はアーキテクチャ パターンです。つまり、サーバーが HTTP を提供することを意味していると思います。

リソースとは、「名前を付けることができる任意のデータ」です。たとえば、組み込みデバイスの LED は '/leds/led3' の URI である可能性があります。保持するデータ (状態、RGB LED? など) を標準の PUT 要求で変更でき、GET は現在の状態を返す必要があります。

それをコーディングすることに関しては、メモリがパス検索をできるだけ簡単にすることができる場合、一般的なツリー構造が賢明かもしれません。リーフでのデータおよび関数ポインター (オブジェクトのエミュレート) を使用

于 2012-10-19T10:23:49.850 に答える