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}/….
| Beispielroute | Bedeutung des Selektors |
|---|---|
inverse3/0 | Erste Inverse3 Index (0-basiert) |
inverse3/A14 | Inverse3 Geräte-ID A14 |
inverse3/* | Alle Inverse3 (Platzhalter) |
*inverse/* | Alle Geräte der Inverse-Familie (Inverse3, Inverse3x, Minverse) |
verse_grip/0 | Erster verkabelter VerseGrip von index |
wireless_verse_grip/* | Alle kabellosen VerseGrips |
*verse_grip/* | Alle Geräte der VerseGrip-Familie (kabelgebunden, kabellos, kundenspezifisch) |
Regeln:
GETlehnt Platzhalter-Selektoren ab (mehrdeutig) →400POSTundDELETEPlatzhalter 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.
| Ausdruck | Bedeutung |
|---|---|
| (weggelassen) | Alle Sitzungen (zulässig am DELETE (nur) |
#123 oder 123 | Sitzung mit der numerischen ID 123 |
:0 | Erste Sitzung nach Index |
:-1 | Letzte Sitzung nach Index |
profile_name | Erste Sitzung mit diesem Profil (kann mehrdeutig sein) |
profile_name:0 | Erste Sitzung mit Profil + Index 0 |
:default:0 | Erste Sitzung mit Profil default am Index 0 |
co.haply.hub::*:0 | Die erste Sitzung, deren Profil mit co.haply.hub:: (Platzhalter „glob“) |
:co.haply.hub::*:-1 | Letzte Sitzung im co.haply.hub:: Namensraum |
Beispiel:
GET /inverse3/0/config/navigation?session=:default:0
Platzhalter für Profilnamen
Profilmuster akzeptieren zwei Glob-Metazeichen:
| Metazeichen | Bedeutung |
|---|---|
* | 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 derco.haply.hub::Namensraum*-update— jedes Profil, das auf-updateco.haply.*:*— jedes Profil, dessen Namensraum mitco.haply.defaul?— jedes 7-stellige Profil, das mitdefaul
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.
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 %3F — GET /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.
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).