셀렉토렌
셀렉터는 HTTP 요청이나 WebSocket 명령이 어떤 장치와 어떤 세션을 대상으로 하는지 지정합니다.
장치 선택기 — URL 경로
다음과 같은 형식의 모든 장치 관련 HTTP 경로에서 /{device_type}/{id_or_index}/… 사용됩니다.
| 경로 예시 | 선택기의 의미 |
|---|---|
inverse3/0 | 인덱스(0부터 시작)를 기준으로 한 첫 번째 Inverse3 |
inverse3/A14 | Inverse3 기기 ID 포함 A14 |
inverse3/* | 모든 Inverse3 기기 (와일드카드) |
*inverse/* | Inverse 제품군의 모든 기기 (Inverse3, Inverse3x, Minverse) |
inverse3:left/0 | 인덱스 기준 최초의 왼손잡이 ‘ Inverse3 ’ |
*inverse:right/0 | 인덱스 기준 인버스 제품군 최초의 오른손용 기기 |
verse_grip/0 | 인덱스 기준 최초의 유선 VerseGrip |
wireless_verse_grip/* | 모든 무선 VerseGrips |
*verse_grip/* | VerseGrip 제품군의 모든 기기(유선, 무선, 맞춤형) |
*verse_grip:custom/0 | 인덱스 기준 최초의 사용자 정의 VerseGrip (다음과 동일함) custom_verse_grip/0) |
클래스 필터는 색인 생성 전에 해제됩니다.
아인 <type>:<class>/<N>-Selektor는 먼저 클래스 필터를 적용합니다 an 그리고 그 후 필터링된 집합을 인덱싱합니다. <N> 이는 원본 장치 목록이 아닌, 필터링된 목록 내의 특정 항목을 가리킵니다:
*inverse:left/0— das 양손잡이 Inverse 제품군에 속하는 장치입니다. 세 개의 Inverse 장치가 연결되어 있을 경우(오른쪽, 왼쪽, 오른쪽), 이는 두 번째 장치로 해석되며 인덱스로 해석되지 않습니다.0, “왼쪽에 있어야 함”으로 필터링됨.inverse3:right/0— 제0대 우손 Inverse3.*inverse:left/3—404, 연결된 왼손잡이 Inverse 기기가 4대 미만인 경우, 총 Inverse 기기 수가 4대 이상이라 하더라도 마찬가지입니다.
와일드카드 선택자에도 동일한 규칙이 적용됩니다: *inverse/* 그리고 *verse_grip/* 만나다 각 가족이 사용하는 기기, 그리고 POST- 또는 DELETE-이 선택자를 대상으로 하는 쿼리는 해당 연산을 적용합니다. jeden 첫눈에 반하는 것뿐만 아니라, 그 이후에도 계속 끌리는 것.
규칙:
GET와일드카드 선택자를 거부합니다 (다의적) →400POST그리고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 또는 123 | 번호 123인 회의 |
:0 | 지수별 첫 회의 |
:-1 | 지수에 따른 마지막 회의 |
profile_name | 이 프로필을 사용한 첫 번째 세션 (여러 가지 의미로 해석될 수 있음) |
profile_name:0 | 이 프로필을 사용한 첫 번째 세션이며 인덱스는 0입니다. |
:default:0 | 프로필을 활용한 첫 회의 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 인코딩을 할 필요는 없습니다. 셸에서는 다음과 같은 표현식을 # 또는 * 포함된 내용은 따옴표로 묶으십시오 (예: --session "#42", --session "co.haply.hub::*:0"), 셸이 이를 주석으로 해석하거나 로컬 파일에 대해 글로브 확장을 수행하지 않도록 하기 위해서입니다.
한 가지 예외: 글로브 메타 기호 ? ~에 있다 Pfaden URL 쿼리 문자열의 구분자. 경로 형식의 선택자(예: /sessions/defaul?:0)는 다음과 같이 %3F 퍼센트 코딩이 적용된다 – GET /sessions/defaul%3F:0. 쿼리 형식의 선택자에서 (?session=defaul?:0) 첫 번째 항목만 표시합니다 ? 쿼리 및 그 이후의 ?-기호는 변경 없이 그대로 적용됩니다.
WebSocket 연결 시 sind 세션 – 귀하의 항목 configure 그리고 commands 현재 세션의 기기를 자동으로 대상으로 지정합니다. 세션 선택기는 오직 HTTP- 요청이 필요합니다(여러 세션에 걸친 원격 제어 포함 – 참조: 회의).