メインコンテンツへ移動

セレクター

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

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

デバイスレベルでのすべてのHTTPリクエストにおいて、以下の形式で使用されます。 /{device_type}/{id_or_index}/….

ルートの例セレクタの意味
inverse3/0インデックス順(0を基点)のInverse3
inverse3/A14Inverse3 デバイスの識別子は A14
inverse3/*Inverse3 のすべてのデバイス(ワイルドカード)
*inverse/*Inverse シリーズの全機種(Inverse3 、Inverse3x、Minverse )
inverse3:left/0Inverse3 のインデックスによると、左利き用
*inverse:right/0インデックスに基づく「Inverse」シリーズの右利き用フラッグシップモデル
verse_grip/0人差し指に装着する「プレミア・ヴァースグリップ」有線タイプ
wireless_verse_grip/*すべてのワイヤレスVerseGrip
*verse_grip/*VerseGrip シリーズの全機種(有線、無線、カスタマイズモデル)
*verse_grip:custom/0プレミア・バースグリップ カスタマイズ 索引によると(これは custom_verse_grip/0)

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

セレクター <type>:<class>/<N> アップリケ まず クラスフィルターを適用し、 フィルタリングされた集合内でインデックス付けを行います。その <N> は、フィルタリングされたリスト内の位置を指し、 未加工のデバイス一覧内の位置を指すものではありません:

  • *inverse:left/0 — 装置 人差し指のガウシェ 0 Inverseシリーズのもの。3台のInverse機器が接続されている場合 (右利き用、左利き用、右利き用)、このセレクターは2台目の機器に対応しており、indexには対応していません。 0 フィルタリング 「左利きであるべき」という条件で。
  • inverse3:right/0 — leInverse3 右利き d'index 0。
  • *inverse:left/3 — 404 左利き用のInverse端末が4台未満接続されている場合、 たとえInverse端末の総数が4台を超えていても。

このルールはジェネリックセレクタにも同様に適用されます: *inverse/* et *verse_grip/* ~に相当する tous 同シリーズの機器、およびリクエスト POST / DELETE 対象として これらのセレクタは、操作を すべて それらの対応関係、そして単に 最初のものだけにとどまらない。

ルール:

  • GET 曖昧な(多義的な)セレクタを排除する → 400
  • POST et 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 ou 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] ne sont pas (対応しています)。大文字と小文字は区別されます。

Un * ソウル(または 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> — il すべての通信を、同じメーリングリストの封筒に入れて返信します。 GET /sessions.

セレクターはそのまま転送してください

上記の各セレクタ形式(以下を含む)―― #42 そして、プロファイルのモチーフを * — 標準的なHTTPクライアント(Python)によってそのまま転送されます requests, libhv, curl, fetch). クライアント側でのURLのエンコードは不要です。コマンドプロンプトでは、 以下のトークンを引用符で囲んでください # ou * (例: --session "#42", --session "co.haply.hub::*:0") インタプリタがこれらをコメントとして扱ったり、ローカルファイル上でジェネリックパターンとして展開したりするのを防ぐためです。

例外 : グローバルメタ文字 ? は、URLリクエストの区切り文字です 以下の chemins. パス形式のセレクタ(例: /sessions/defaul?:0)、パーセンテージで 以下の形式で 記述する必要があります %3F — GET /sessions/defaul%3F:0. クエリ形式のセレクタ内で (?session=defaul?:0)、最初のもののみ ? クエリと、それらを ? 以下の内容は、変更を加えることなく転送されます。

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

WebSocket接続では、あなたは êtes セッション:入力項目 configure et commands 現在のセッションのデバイスを自動的に選択します。セッションセレクタは クエリの場合にのみ必要です HTTP (セッション間のリモコン操作を含む — 詳細は セッション).