选择器
选择器用于指定 HTTP 请求或 WebSocket 命令的目标设备及会话。
设备选择器 — URL 路径
在设备层面的所有 HTTP 路由中使用,形式为 /{device_type}/{id_or_index}/….
| 路线示例 | 选择器的含义 |
|---|---|
inverse3/0 | 根据索引(0为基准)显示的Inverse3 |
inverse3/A14 | Inverse3 设备标识符是 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/0 | Premier 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拒绝使用通用(含糊不清的)选择器 →400POSTetDELETE接受通配符——该操作将应用于所有匹配项- 答案
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— 任何以-updateco.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 连接中,您可以 êtes 本场:您的入场券 configure et
commands 会自动定位当前会话中的设备。会话选择器
仅在处理请求时才需要 超文本传输协定 (包括会话之间的远程控制——参见 会话).