跳转至主要内容

Selektoren

选择器用于确定 HTTP 请求或 WebSocket 命令的目标设备及会话。

设备选择器 — URL 路径​

是否在所有与设备相关的 HTTP 路由中,以以下形式出现: /{device_type}/{id_or_index}/… verwendet。

路线示例选择器的含义
inverse3/0按索引(从0开始)排序的第一个Inverse3
inverse3/A14Inverse3 附设备 ID A14
inverse3/*所有Inverse3 设备(通配符)
*inverse/*Inverse 系列的所有设备(Inverse3 、Inverse3x、Minverse )
inverse3:left/0根据索引,首款左撇子版 Inverse3
*inverse:right/0按索引排序的Inverse系列首款右手操作设备
verse_grip/0首款按索引排序的有线VerseGrip
wireless_verse_grip/*所有无线VerseGrips
*verse_grip/*VerseGrip 系列的所有设备(有线、无线、定制型)
*verse_grip:custom/0首个按索引排序的用户自定义VerseGrip(相当于 custom_verse_grip/0)

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

Ein <type>:<class>/<N>-Selektor 首先应用类过滤器 一个 并随后对过滤后的集合进行索引。 <N> 指的是过滤后列表中的某个位置,而不是原始设备列表中的位置:

  • *inverse:left/0 — das nullte 左右手通用 Inverse 系列设备。如果将三个 Inverse 设备连接起来(右、左、右),则会解析为第二个设备——而不是索引 0,按“必须在左侧”进行筛选。
  • inverse3:right/0 — 零号右撇子Inverse3 。
  • *inverse:left/3 — 404,如果连接的左旋Inverse设备少于四个,即使总共存在超过四个Inverse设备也是如此。

对于通配符选择器,同样适用这条规则: *inverse/* und *verse_grip/* treffen jedes 家庭用设备,以及 POST- 或者 DELETE-针对这些选择器的查询将对...应用该操作 jeden 一击即中——不仅限于第一击。

规则:

  • GET 不支持通配符选择器(含义不明确)→ 400
  • POST und 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 oder简体中文(大陆) 123编号为 123 的会议
:0按索引排列的首次会议
:-1按指数划分的最近一次交易日
profile_name使用此个人资料的首次会话(可能存在歧义)
profile_name:0使用此个人资料的首次会话,索引为 0
:default:0首次与Profil的会议 default 索引 0
co.haply.hub::*:0首次会议,其简介如下: co.haply.hub:: beginnt(Glob 通配符)
:co.haply.hub::*:-1命名空间中的最后一次会话 co.haply.hub::

示例:

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

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

配置文件模式支持两种 Glob 元字符:

元符号含义
*表示任意字符串(包括空字符串)
?表示恰好一个字符

所有其他字符——包括 :, ., -, [, ] – 将进行字面比较(字符类如 [abc] werden nicht简体中文(大陆) (支持)。该比较区分大小写。

一座孤零零的 * (或 all) 仍保留其原有的含义,即 所有会议. 匹配名称与 * 开始时,请输入至少一个额外的字符(例如 *foo).

实用模板:

  • co.haply.hub::* — 命名空间中的每个个人资料 co.haply.hub::
  • *-update — 所有名称以 -update 结束
  • co.haply.*:* — 任何命名空间以 co.haply. 开始
  • defaul? — 每个由 7 个字符组成的个人资料,以 defaul 开始

通配符模式本身就是 多义的 (可能涉及多个会话)。为了在某个 GET- 或 POST-若要使用“Endpunkt”,请在后面添加一个 :<index> auf:

# 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

在 GET/POST 请求中,多义通配符(无索引)将使用 400 被拒绝。只有在明确允许多个会话同时访问的路径上,才会被容忍—— 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>-后缀 tolerieren——它会以与 GET /sessions.

将选择器原样传递

上述每种选择器形式——包括 #42 以及花纹图案,带有 * – 可被标准 HTTP 客户端(Python requests, libhv, curl, fetch) 保持不变地传递。无需在客户端进行 URL 编码。在 Shell 中,您应将包含 # oder简体中文(大陆) * 包含的内容,请用引号括起来(例如: --session "#42", --session "co.haply.hub::*:0"),以免 Shell 将其解释为注释,或对其进行通配符展开以匹配本地文件。

一个例外: Glob元符号 ? 位于 Pfaden URL 查询的分隔符。在路径形式的选择器中(例如 /sessions/defaul?:0) 必须将其视为 %3F 以百分比编码—— GET /sessions/defaul%3F:0. 在一个以查询形式呈现的选择器中(?session=defaul?:0) 仅显示第一项 ? 该查询,以及随后的 ?- 字符将原样保留。

WebSocket 会话不需要选择器

在 WebSocket 连接中 sind 登录 – 您的记录 configure und commands 会自动指向当前会话中的设备。会话选择器仅用于 超文本传输协定-需要提出请求(包括跨会议远程控制——参见 会议).