본문으로 바로 가기

셀렉토렌

셀렉터는 HTTP 요청이나 WebSocket 명령이 어떤 장치와 어떤 세션을 대상으로 하는지 지정합니다.

장치 선택기 — URL 경로​

다음과 같은 형식의 모든 장치 관련 HTTP 경로에서 /{device_type}/{id_or_index}/… 사용됩니다.

경로 예시선택기의 의미
inverse3/0인덱스(0부터 시작)를 기준으로 한 첫 번째 Inverse3
inverse3/A14Inverse3 기기 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 와일드카드 선택자를 거부합니다 (다의적) → 400
  • POST 그리고 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 세션에는 선택자가 필요하지 않습니다.

WebSocket 연결 시 sind 세션 – 귀하의 항목 configure 그리고 commands 현재 세션의 기기를 자동으로 대상으로 지정합니다. 세션 선택기는 오직 HTTP- 요청이 필요합니다(여러 세션에 걸친 원격 제어 포함 – 참조: 회의).