本文へスキップ
バージョン: 3.5.x

セレクタ

セレクタは、HTTPリクエストやWebSocketコマンドがどのデバイスおよびどのセッションを対象としているかを特定します。

デバイス選択ツール — URLパス

すべてのデバイスレベルのHTTPルートで次のように使用されます /{device_type}/{id_or_index}/….

ルートの例セレクターの意味
inverse3/0インデックスInverse3 最初のInverse3 (0から始まる)
inverse3/A14デバイスIDInverse3 A14
inverse3/*すべてのInverse3Inverse3 (ワイルドカード)
*inverse/*Inverseシリーズ全機種(Inverse3、Inverse3x、Minverse)
verse_grip/0インデックスによる最初の有線VerseGrip
wireless_verse_grip/*すべてのワイヤレス・バースグリップ
*verse_grip/*VerseGripシリーズの全デバイス(有線、無線、カスタム)

ルール:

  • GET ワイルドカードセレクタを拒否する(曖昧なため) → 400
  • POST そして DELETE ワイルドカードを受け入れる — 一致したすべての項目に操作を適用する

対応済み {device_type} 値: inverse3, verse_grip, wireless_verse_grip、 またはファミリーワイルドカード *inverse, *verse_grip.

セッションセレクタ — ?session=<expr> クエリパラメータ

セッションスコープのHTTPエンドポイント(basis、mount、preset、filters、navigation、SDF) には、 ?session=<expr> どのセッションのコンテキストで処理を行うかを指定するためのクエリパラメータ。

表現意味
(省略)すべてのセッション(許可されている DELETE (のみ)
#123 または 123IDが123のセッション
:0インデックス別:第1回
:-1インデックス別:前回のセッション
profile_nameこのプロファイルでの初回セッション(曖昧な表現である可能性があります)
profile_name:0プロフィールとインデックス0を含む最初のセッション
:default:0プロフィールを使用した初回セッション default インデックス0の位置で
co.haply.hub::*:0プロファイルが以下で始まる最初のセッション co.haply.hub:: (glob ワイルドカード)
:co.haply.hub::*:-1前回のセッションで co.haply.hub:: 名前空間

例:

GET /inverse3/0/config/navigation?session=:default:0

プロファイル名のワイルドカード

プロファイルパターンでは、2つのグロブメタ文字が使用可能です:

メタ文字意味
*任意の文字列(空文字列を含む)に一致する
?1文字に一致する

それ以外のすべてのキャラクター――以下を含む :, ., -, [, ] — は文字通り一致します( のような文字クラス [abc]ではない (対応)。大文字と小文字は区別されます。

むき出しの * (または all) は、従来の意味をそのまま維持し、 すべてのセッション. 名前が で始まるプロファイルを照合する *、少なくとももう1つの文字を含める(例: *foo).

便利なパターン:

  • co.haply.hub::* — 内の任意のプロファイル co.haply.hub:: 名前空間
  • *-update — 末尾が -update
  • co.haply.*:* — 名前空間が co.haply.
  • defaul? — 以下の文字で始まる7文字のプロフィール名 defaul

ワイルドカードパターンは 曖昧な 単独で(複数のセッションに一致する可能性があります)。これを ある GET / POST エンドポイント、末尾に :<index>:

# First session in the Haply Hub namespace
GET /inverse3/0/config/basis?session=co.haply.hub::*:0

# Last session in a Unity namespace
GET /inverse3/0/config/mount?session=:co.haply.unity::*:-1

曖昧なワイルドカード(インデックスなし)は、以下のメッセージと共に拒否されます 400 GET/POST メソッドでは。これらは、マルチセッションの一致を明示的に受け入れるルートでは許容されます — GET /sessions/<sel> (一致するすべての結果を返す)および DELETE エンドポイント(すべてのマッチに適用される)。

セッションセレクタ — URLパス

について /sessions/{selector} エンドポイントは パスと同じ表記 パラメータ — 特定のセッションを検索したり、そのセッションが存在するかどうかを確認したりするのに便利です:

GET /sessions # list all active sessions
GET /sessions/:default:0 # one session by profile + index
GET /sessions/:-1 # last active session
GET /sessions/#42 # session id 42
GET /sessions/co.haply.hub::* # every session in the co.haply.hub:: namespace
GET /sessions/co.haply.hub::*:0 # first session in that namespace

これは機能的には以下と同じです GET /sessions?session=<selector>; どちらの ルートも、同じハンドラーを呼び出します。 GET /sessions/<sel> は、 「*」のような曖昧なワイルドカードパターンを許容する数少ないエンドポイントの一つです。 :<index> 接尾辞 — it 一致した項目をすべて、 GET /sessions.

セレクタをそのまま渡す

上記のすべての選択フォーム(以下を含む) #42 およびプロファイルパターンを * — 標準的なHTTPクライアント(Python)によってそのまま転送されます requests, libhv, curl, fetch)。クライアント側でのURLエンコードは不要です。シェルでは、 を含むトークンを引用符で囲んでください # または * (例: --session "#42", --session "co.haply.hub::*:0") シェルがこれらをコメントとして扱ったり、ローカルファイルに対してグロブ展開を行ったりしないようにするためです。

一つの例外: その ? globメタ文字はURLクエリの区切り文字です in 経路. パス形式のセレクタ(例: /sessions/defaul?:0) 以下の形式でパーセントエンコードする必要があります %3FGET /sessions/defaul%3F:0. クエリ形式の セレクタ (?session=defaul?:0)、最初のもののみ ? クエリを分割し、 その後 ? 文字列は変更されずに渡されます。

WebSocketセッションにはセレクタは必要ありません

WebSocket接続では、 セッション — あなたの configure そして commands エントリは自動的に現在のセッションのデバイスを対象とします。セッション セレクタが必要なのは、 HTTP リクエスト(セッションをまたぐ リモートコントロールを含む — 参照 セッション).