Zum Hauptinhalt springen
Version: 3.5.x

Auswahlkriterien

Selektoren geben an, auf welches Gerät und welche Sitzung eine HTTP-Anfrage oder ein WebSocket-Befehl abzielt.

Geräteauswahl – URL-Pfad

Wird in allen HTTP-Routen auf Geräteebene verwendet als /{device_type}/{id_or_index}/….

BeispielrouteBedeutung des Selektors
inverse3/0Erste Inverse3 Index (0-basiert)
inverse3/A14Inverse3 Geräte-ID A14
inverse3/*Alle Inverse3 (Platzhalter)
*inverse/*Alle Geräte der Inverse-Familie (Inverse3, Inverse3x, Minverse)
verse_grip/0Erster verkabelter VerseGrip von index
wireless_verse_grip/*Alle kabellosen VerseGrips
*verse_grip/*Alle Geräte der VerseGrip-Familie (kabelgebunden, kabellos, kundenspezifisch)

Regeln:

  • GET lehnt Platzhalter-Selektoren ab (mehrdeutig) → 400
  • POST und DELETE Platzhalter zulassen – Operation wird auf alle Übereinstimmungen angewendet

Unterstützt {device_type} Werte: inverse3, verse_grip, wireless_verse_gripoder Familien-Platzhalter *inverse, *verse_grip.

Sitzungsauswahl — ?session=<expr> Abfrageparameter

HTTP-Endpunkte mit Sitzungsgültigkeit (basis, mount, preset, filters, navigation, SDF) erfordern eine ?session=<expr> Abfrageparameter, um festzulegen, in welchem Sitzungskontext die Operation ausgeführt werden soll.

AusdruckBedeutung
(weggelassen)Alle Sitzungen (zulässig am DELETE (nur)
#123 oder 123Sitzung mit der numerischen ID 123
:0Erste Sitzung nach Index
:-1Letzte Sitzung nach Index
profile_nameErste Sitzung mit diesem Profil (kann mehrdeutig sein)
profile_name:0Erste Sitzung mit Profil + Index 0
:default:0Erste Sitzung mit Profil default am Index 0
co.haply.hub::*:0Die erste Sitzung, deren Profil mit co.haply.hub:: (Platzhalter „glob“)
:co.haply.hub::*:-1Letzte Sitzung im co.haply.hub:: Namensraum

Beispiel:

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

Platzhalter für Profilnamen

Profilmuster akzeptieren zwei Glob-Metazeichen:

MetazeichenBedeutung
*passt auf jede beliebige Zeichenfolge (einschließlich einer leeren Zeichenfolge)
?entspricht genau einem Zeichen

Alle anderen Figuren – einschließlich :, ., -, [, ] — wird wörtlich abgeglichen (Zeichenklassen wie [abc] sind nicht (unterstützt). Bei der Suche wird die Groß-/Kleinschreibung beachtet.

Ein nackter * (oder all) behält seine bisherige Bedeutung von alle Sitzungen. Um Profile zu finden, deren Name mit *, mindestens ein weiteres Zeichen enthalten (z. B. *foo).

Nützliche Muster:

  • co.haply.hub::* — jedes Profil in der co.haply.hub:: Namensraum
  • *-update — jedes Profil, das auf -update
  • co.haply.*:* — jedes Profil, dessen Namensraum mit co.haply.
  • defaul? — jedes 7-stellige Profil, das mit defaul

Ein Platzhaltermuster ist mehrdeutig allein (es kann auf mehr als eine Sitzung zutreffen). Um es auf einer GET / POST Endpunkt, zur Unterscheidung mit einem abschließenden :<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

Mehrdeutige Platzhalter (ohne Index) werden mit 400 bei GET/POST. Sie werden auf Routen toleriert, die explizit Multi-Session-Übereinstimmungen zulassen — GET /sessions/<sel> (gibt bei jeder Übereinstimmung ein Ergebnis zurück) und DELETE Endpunkte (gilt für jede Übereinstimmung).

Sitzungsauswahl – URL-Pfad

Die /sessions/{selector} Der Endpunkt akzeptiert die derselbe Ausdruck wie ein Pfad Parameter — nützlich, um eine einzelne Sitzung nachzuschlagen oder zu überprüfen, ob eine solche vorhanden ist:

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

Dies entspricht funktional GET /sessions?session=<selector>; beide Routen rufen denselben Handler auf. GET /sessions/<sel> ist einer der wenigen Endpunkte, der ein mehrdeutiges Platzhaltermuster ohne ein :<index> Suffix — it gibt alle Treffer in derselben Listenhülle zurück wie GET /sessions.

Selektoren wörtlich übergeben

Jedes der oben aufgeführten Auswahlformulare – einschließlich #42 und Profilmuster mit * — wird von Standard-HTTP-Clients unverändert übertragen (Python requests, libhv, curl, fetch). Eine URL-Kodierung auf Client-Seite ist nicht erforderlich. In Shells sollten Token, die # oder * (z. B. --session "#42", --session "co.haply.hub::*:0") damit die Shell sie nicht als Kommentare behandelt oder bei lokalen Dateien eine Glob-Erweiterung durchführt.

Eine Ausnahme: das ? Das Metazeichen „glob“ dient als Trennzeichen für URL-Abfragen in Wege. In einem Pfadselektor (z. B. /sessions/defaul?:0) muss es prozentkodiert werden als %3FGET /sessions/defaul%3F:0. In einem Abfrage-Selektor (?session=defaul?:0), nur der erste ? teilt die Abfrage auf und anschließend ? Zeichen werden unverändert weitergegeben.

WebSocket-Sitzungen benötigen keine Selektoren

Bei einer WebSocket-Verbindung sind die Sitzung – Ihre configure und commands Einträge beziehen sich automatisch auf die Geräte der aktuellen Sitzung. Sitzungsauswähler werden nur benötigt für HTTP Anfragen (einschließlich sitzungsübergreifender Fernsteuerung – siehe Sitzungen).