跳转至主要内容

选择器

选择器用于指定 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/0根据索引, Inverse3 是左撇子
*inverse:right/0根据索引,Inverse系列中专为右撇子设计的旗舰机型
verse_grip/0根据食指选择的顶级VerseGrip有线款
wireless_verse_grip/*所有无线VerseGrip产品
*verse_grip/*VerseGrip 系列的所有设备(有线、无线、定制款)
*verse_grip:custom/0Premier VerseGrip 个性化 根据索引(相当于 custom_verse_grip/0)

类过滤器在索引生成之前就会被解析​

一个选择器 <type>:<class>/<N> 贴花 首先 类过滤器,然后在 过滤后的集合中进行索引。该 <N> 表示在过滤后的列表中的位置,而非 在原始设备列表中的位置:

  • *inverse:left/0 — 该设备 食指高氏病 0 属于Inverse系列。如果连接了三台Inverse设备 (右手型、左手型、右手型),则该选择开关对应第二台设备,而非索引 0 已筛选 结果为“必须是左撇子”。
  • inverse3:right/0 — leInverse3 更偏向右侧 d'index 0.
  • *inverse:left/3 — 404 如果连接的“Inverse”左旋设备少于四台, 即使“Inverse”设备总数超过四台。

同样的规则也适用于通用选择器: *inverse/* et *verse_grip/* 对应于 tous 家庭中的设备以及请求 POST / DELETE 针对 这些选择器将该操作应用于 toutes 各封信件,而不仅仅是 第一封。

规则:

  • 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会话的数字标识符为 123
:0按索引排列的第一场会议
:-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

个人资料名称中的通配符​

轮廓模式支持两种全局通配符:

元字符含义
*匹配任何字符序列(包括空序列)
?与一个字符完全匹配

任何其他字符——包括 :, ., -, [, ] — 进行字面比较(字符类 如 [abc] ne sont pas简体中文(大陆) (支持)。匹配操作会区分大小写。

Un * 首尔(或 all) 保留其原有含义,即 所有场次. 匹配名称 以 *, 请再添加至少一个字符(例如 *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") 以防止解释器将它们视为注释,或将其作为通用模式应用于本地文件。

一个例外 : glob 通配符 ? 是 URL 查询的分隔符 在 chemins. 在路径形状选择器中(例如 /sessions/defaul?:0),必须以百分比形式表示 ,格式为 %3F — GET /sessions/defaul%3F:0. 在一个查询形式选择器中 (?session=defaul?:0),仅限第一项 ? 将请求与 ? 以下内容未经修改直接转发。

WebSocket 会话不需要选择器

在 WebSocket 连接中,您可以 êtes 本场:您的入场券 configure et commands 会自动定位当前会话中的设备。会话选择器 仅在处理请求时才需要 超文本传输协定 (包括会话之间的远程控制——参见 会话).