WebServerライブラリの関数ハンドラの指定をどうにかしたいンゴ

Arduino/ESP32Arduino,ESP32,PlatformIO,WebServer

前記事で使わせていただいたArduino core for the ESP32のWebServerライブラリなんですが

リクエストされてくるURIに対して関数ハンドラを指定する箇所がちょっと使いにくいなぁと思いまして。

例えばドキュメントルートと /xxx を一緒くたに扱いたい時とか、いちいち個別に指定しなくてはいけない。

  server.on("/", []() {
    server.send(200, "text/plain", "hello from esp32!");
  });

  server.on("/xxx", []() {
    server.send(200, "text/plain", "hello from esp32!");
  });

なんていいますか、この「server.on(“/xxx",」のところ、正規表現かワイルドカードか何か指定したい訳ですょ

と思ってexamplesを眺めていたら、PathArgServer にそのものズバリがあるじゃないですか。

なんかいい感じですな。階層毎にも取れるし正規表現でも取れるみたい。

  server.on("/", []() {
    server.send(200, "text/plain", "hello from esp32!");
  });

  server.on(UriBraces("/users/{}"), []() {
    String user = server.pathArg(0);
    server.send(200, "text/plain", "User: '" + user + "'");
  });
  
  server.on(UriRegex("^\\/users\\/([0-9]+)\\/devices\\/([0-9]+)$"), []() {
    String user = server.pathArg(0);
    String device = server.pathArg(1);
    server.send(200, "text/plain", "User: '" + user + "' and Device: '" + device + "'");
  });

ほほぅ、{}とな、、

どうにかワイルドカード的な文字列を無理矢理捻じ込んジャロとおもって散々試したのに

結局素直にUriクラスのインスタンスを渡せばよかったんや・・・

さて、、、

自分で書くのもアレですし、ヤホーイ!と思って早速導入しようと思いましたら、、

uri/UriBraces.h と uri/UriRegex.h が見つかりませんよ

とVSCodeさんが警告を。

えぇ!?だってほら、Gitには確かにあるよ・・・?

なんかパスの指定間違ってる・・・?

などと右往左往しながら調べてみると、PlatformIOで導入しているプラットホーム「Espressif 32」が使用するarduinoフレームワーク「framework-arduinoespressif32」がちょっと古いみたいです。

ローカルに保存されている「framework-arduinoespressif32」を探してみましたら、確かに該当するヘッダファイルが存在しない。

バージョン情報を見ると、んん、、これか、、?

3.10004.200129 ?

■ C:\Users{USER}.platformio\packages\framework-arduinoespressif32\package.json

{
    "name": "framework-arduinoespressif32",
    "description": "Arduino Wiring-based Framework (ESP32 Core)",
    "version": "3.10004.200129",
    "url": "https://github.com/espressif/arduino-esp32"
}

そんでもってEspressif公式GitのMasterブランチは・・・

{
    "name": "framework-arduinoespressif32",
    "description": "Arduino Wiring-based Framework (ESP32 Core)",
    "version": "0.0.0",
    "url": "https://github.com/espressif/arduino-esp32"
}

0.0.0、、、?

わかんないや はっはっはっは(汁

まぁいいや、とりあえずこのGitバージョンを導入すればいいんじゃろ?

と思ってPlatformIOをいじくりまわしてみるけれど

軽く1時間はマウスでポチポチ探してみるけれど

なんか出来なそうなのでgoogle先生に頼ったらありましたorz

が、、ここから大変なことに・・・

・・・いしのなかにいる