セレクタ
セレクタは、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ワイルドカードセレクタを拒否する(曖昧なため) →400POSTそして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 または 123 | IDが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— 末尾が-updateco.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) 以下の形式でパーセントエンコードする必要があります %3F — GET /sessions/defaul%3F:0. クエリ形式の
セレクタ (?session=defaul?:0)、最初のもののみ ? クエリを分割し、
その後 ? 文字列は変更されずに渡されます。
WebSocket接続では、 は セッション — あなたの configure そして
commands エントリは自動的に現在のセッションのデバイスを対象とします。セッション
セレクタが必要なのは、 HTTP リクエスト(セッションをまたぐ
リモートコントロールを含む — 参照 セッション).