Sélecteurs
Les sélecteurs permettent d'identifier le périphérique et la session auxquels une requête HTTP ou une commande WebSocket est destinée.
Sélecteur d'appareil — Chemin d'accès URL
Utilisé dans toutes les routes HTTP au niveau de l'appareil comme /{device_type}/{id_or_index}/….
| Exemple d'itinéraire | Signification du sélecteur |
|---|---|
inverse3/0 | Premier Inverse3 index (à partir de 0) |
inverse3/A14 | Inverse3 l'identifiant de l'appareil A14 |
inverse3/* | Tous Inverse3 (symbolique) |
*inverse/* | Tous les appareils de la gamme Inverse (Inverse3, Inverse3x, Minverse) |
verse_grip/0 | Premier VerseGrip câblé par index |
wireless_verse_grip/* | Tous les VerseGrips sans fil |
*verse_grip/* | Tous les appareils de la gamme VerseGrip (avec fil, sans fil, sur mesure) |
Règles :
GETrefuse les sélecteurs génériques (ambigus) →400POSTetDELETEaccepter les caractères génériques — opération appliquée à toutes les correspondances
Prise en charge {device_type} valeurs : inverse3, verse_grip, wireless_verse_grip,
ou des caractères génériques de famille *inverse, *verse_grip.
Sélecteur de session — ?session=<expr> paramètre de requête
Les points de terminaison HTTP liés à la session (basis, mount, preset, filters, navigation, SDF)
nécessitent un ?session=<expr> paramètre de requête permettant de déterminer le contexte de session
dans lequel opérer.
| Expression | Signification |
|---|---|
| (omission) | Toutes les sessions (autorisées sur DELETE (uniquement) |
#123 ou 123 | Session portant le numéro d'identification 123 |
:0 | Première session par index |
:-1 | Dernière session par index |
profile_name | Première session avec ce profil (peut prêter à confusion) |
profile_name:0 | Première session avec profil + index 0 |
:default:0 | Première session avec le profil default à l'index 0 |
co.haply.hub::*:0 | Première session dont le profil commence par co.haply.hub:: (caractère générique « * ») |
:co.haply.hub::*:-1 | Dernière session de la co.haply.hub:: espace de noms |
Exemple :
GET /inverse3/0/config/navigation?session=:default:0
Caractères génériques dans les noms de profil
Les modèles de profil acceptent deux métacaractères globaux :
| métacaractère | Signification |
|---|---|
* | correspond à n'importe quelle séquence de caractères (y compris une chaîne vide) |
? | correspond exactement à un caractère |
Tous les autres personnages — y compris :, ., -, [, ] — est mis en correspondance littérale (classes de caractères
telles que [abc] sont pas (pris en charge). La correspondance tient compte de la casse.
Un nu * (ou all) conserve son sens actuel de toutes les sessions. Pour trouver les profils dont le nom
commence par *, comprenez au moins un autre caractère (par exemple *foo).
Modèles utiles :
co.haply.hub::*— n'importe quel profil dans leco.haply.hub::espace de noms*-update— tout profil se terminant par-updateco.haply.*:*— tout profil dont l'espace de noms commence parco.haply.defaul?— tout profil de 7 caractères commençant pardefaul
Un motif avec caractères génériques est ambigu à lui seul (il peut correspondre à plusieurs sessions). Pour l'utiliser sur
un GET / POST point final, lever toute ambiguïté en ajoutant un :<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
Les caractères génériques ambigus (sans index) sont rejetés avec 400 dans les requêtes GET/POST. Elles sont tolérées sur les routes
qui acceptent explicitement les correspondances multisession — GET /sessions/<sel> (renvoie toutes les correspondances) et
DELETE critères d'évaluation (appliqués à chaque correspondance).
Sélecteur de session — Chemin d'accès URL
Les /sessions/{selector} le point de terminaison accepte le la même expression qu'un paramètre
de chemin — utile pour rechercher une session spécifique ou vérifier si celle-ci
existe :
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
Cela revient au même que GET /sessions?session=<selector>; les deux
routes appellent le même gestionnaire. GET /sessions/<sel> est l'un des rares points de terminaison
qui tolère un motif générique ambigu sans :<index> suffixe — it
renvoie toutes les correspondances dans la même liste que GET /sessions.
Tous les formulaires de sélection ci-dessus — y compris #42 et les motifs de profil avec * —
est transmis tel quel par les clients HTTP standard (Python requests, libhv,
curl, fetch). Aucun encodage d'URL côté client n'est nécessaire. Dans les shells, mettez entre guillemets
les tokens qui contiennent # ou * (par exemple --session "#42", --session "co.haply.hub::*:0")
pour empêcher le shell de les traiter comme des commentaires ou d'effectuer une expansion de caractères génériques
sur les fichiers locaux.
Une exception: le ? Le métacaractère « * » sert de séparateur dans les requêtes URL
dans chemins. Dans un sélecteur de type chemin (par exemple /sessions/defaul?:0) il doit être
codé en pourcentage sous la forme %3F — GET /sessions/defaul%3F:0. Dans un sélecteur de type requête
(?session=defaul?:0), uniquement le premier ? divise la requête et
les étapes suivantes ? les caractères sont transmis tels quels.
Sur une connexion WebSocket, vous sont la session — votre configure et
commands Les entrées ciblent automatiquement les périphériques de la session en cours. Les
sélecteurs de session ne sont nécessaires que pour HTTP demandes (y compris la commande à distance
entre sessions — voir Séances).