メインコンテンツへスキップ

セレクター

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

デバイスセレクター — URLパス​

すべてのデバイス関連のHTTPルートにおいて、次のような形式で /{device_type}/{id_or_index}/… 使用される。

ルート例セレクタの役割
inverse3/0インデックス(0から始まる)に基づく最初のInverse3
inverse3/A14Inverse3 デバイスID付き A14
inverse3/*すべてのInverse3 デバイス(ワイルドカード)
*inverse/*Inverseシリーズの全機種(Inverse3 、Inverse3x、Minverse )
inverse3:left/0インデックスに掲載された初の左利き用 Inverse3
*inverse:right/0Index社によるInverseシリーズの初の右利き用デバイス
verse_grip/0インデックス社初の有線式VerseGrip
wireless_verse_grip/*すべてのワイヤレスVerseGrips
*verse_grip/*VerseGrip シリーズの全デバイス(有線、無線、カスタム仕様)
*verse_grip:custom/0インデックスに基づく最初のユーザー定義VerseGrip(以下に相当) custom_verse_grip/0)

クラスフィルターは、インデックス作成の前に解消されます​

アイン <type>:<class>/<N>-Selektorはまずクラスフィルターを適用します an そして、フィルタリングされた集合をインデックス付けします。 <N> これは、フィルタリング済みのリスト内の位置を指しており、未加工のデバイスリスト内の位置ではありません:

  • *inverse:left/0 — das nullte 両利き Inverse ファミリーのデバイスです。3つの Inverse デバイスが接続されている場合(右、左、右)、これは 2 番目のデバイスとして認識されます。インデックスとしては認識されません。 0、「左側にあるもの」でフィルタリングした。
  • inverse3:right/0 — ゼロ番目の右利きInverse3 。
  • *inverse:left/3 — 404、左利き用のインバース機器が4台未満接続されている場合は、たとえインバース機器の総数が4台を超えていても、その限りではありません。

ワイルドカードセレクタについても、同じルールが適用されます: *inverse/* und *verse_grip/* treffen jedes 家族用の機器、そして POST- あるいは DELETE-これらのセレクタを対象とするクエリは、その操作を適用します jeden 的を射る――一発目だけにとどまらない。

ルール:

  • GET ワイルドカードセレクタを拒否する(曖昧) → 400
  • POST und DELETE ワイルドカードを受け入れる – 操作はすべての検索結果に適用されます
  • 404-回答は次の形式で記述してください no device matches selector '<sel>'、ただし <sel> 受信された形式での元のセレクタ式は次のとおりです。

対応している {device_type}-値: inverse3, verse_grip, wireless_verse_grip または家族用ワイルドカード *inverse, *verse_grip.

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

セッション関連のHTTPエンドポイント(basis、mount、preset、filters、navigation、SDF)には、クエリパラメータが必要です。 ?session=<expr>, これは、それらがどのセッションコンテキストで動作するかを規定するものです。

出力意味
(省略)すべての会議(ただし、 DELETE (許可)
#123 oder 123数値ID 123 の会議
:0インデックスに基づく最初の会議
:-1インデックス別の最終セッション
profile_nameこのプロフィールでの最初のセッション(曖昧な意味合いがある可能性があります)
profile_name:0このプロファイルとインデックス0を使用した最初のセッション
:default:0プロフィールを使った最初のセッション default インデックス 0
co.haply.hub::*:0最初の会議で、その概要は co.haply.hub:: beginnt(Globワイルドカード)
:co.haply.hub::*:-1名前空間での最後のセッション co.haply.hub::

例:

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

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

プロファイルテンプレートでは、2つのGlobメタ文字が使用可能です:

メタ記号意味
*任意の文字列(空でも可)を表します
?ちょうど1つの文字を表す

その他のすべての文字(以下を含む) :, ., -, [, ] – は文字通り比較される(文字クラスなど [abc] werden nicht (対応)。この比較では、大文字と小文字が区別されます。

孤立した * (または all) は、これまでの意味である すべてのセッション. 名前が * が始まったら、少なくとももう1文字を入力してください(例: *foo).

役立つテンプレート:

  • co.haply.hub::* — 名前空間内の各プロファイル co.haply.hub::
  • *-update — 名前が -update endet
  • co.haply.*:* — 名前空間が co.haply. 始まる
  • defaul? — 7文字のプロフィールで、 defaul 始まる

ワイルドカードパターンはそれ自体で 多義的 (複数のセッションに該当する場合もあります)。これを一例として挙げると、 GET- または POST-Endpunkt を使用する場合は、末尾に :<index> auf:

# 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

GET/POST では、多義的なワイルドカード(インデックスなし)は 400 却下されました。これらが許容されるのは、複数のセッションからのヒットを明示的に受け入れるルートに限られます―― 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>-接尾辞「tolerieren」 – すべての検索結果を、 GET /sessions.

セレクタをそのまま引き継ぐ

上記の各セレクタ形式(以下を含む)―― #42 およびプロファイルパターン付き * – 標準のHTTPクライアント(Python requests, libhv, curl, fetch) を変更せずに転送します。クライアント側での URL エンコーディングは不要です。シェルでは、 # oder * が含まれている場合は、引用符で囲む(例: --session "#42", --session "co.haply.hub::*:0")、これにより、シェルがそれらをコメントとして解釈したり、ローカルファイルに対してグロブ展開を行ったりしないようにするためです。

例外: グローブ・メタ記号 ? ist in Pfaden URLクエリの区切り文字。パス形式のセレクタ(例: /sessions/defaul?:0) として扱わなければならない %3F パーセント符号化される – GET /sessions/defaul%3F:0. クエリ形式のセレクタ(?session=defaul?:0) は最初のものだけを共有する ? そのクエリ、およびそれに続く ?-記号はそのまま引き継がれます。

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

WebSocket接続の場合 sind セッション – あなたの入力内容 configure und commands 現在のセッションのデバイスを自動的に対象とします。セッションセレクタは、 HTTP- 申請が必要(セッションをまたぐリモート制御を含む – 詳細は 会議).