선택기
선택기는 HTTP 요청이나 WebSocket 명령이 어떤 장치와 어떤 세션을 대상으로 하는지 식별합니다.
장치 선택기 — URL 경로
모든 장치 수준 HTTP 경로에서 다음과 같이 사용됩니다. /{device_type}/{id_or_index}/….
| 경로 예시 | 선택기의 의미 |
|---|---|
inverse3/0 | 인덱스(0부터 시작) Inverse3 첫 번째 Inverse3 |
inverse3/A14 | 장치 ID가 Inverse3 A14 |
inverse3/* | 모든 Inverse3 (일괄 지정) |
*inverse/* | 모든 Inverse 시리즈 기기(Inverse3, Inverse3x, Minverse) |
verse_grip/0 | 인덱스사의 첫 유선 VerseGrip |
wireless_verse_grip/* | 모든 무선 VerseGrips |
*verse_grip/* | 모든 VerseGrip 제품군 기기(유선, 무선, 맞춤형) |
규칙:
GET와일드카드 선택자(모호함)를 허용하지 않음 →400POST그리고DELETE와일드카드 허용 — 일치하는 모든 항목에 적용되는 작업
지원됨 {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 | ID가 123인 세션 |
:0 | 인덱스별 첫 번째 세션 |
:-1 | 인덱스별 최근 세션 |
profile_name | 이 프로필을 사용한 첫 번째 세션입니다 (의미가 모호할 수 있음) |
profile_name:0 | 프로필 및 인덱스 0을 포함한 첫 번째 세션 |
:default:0 | 프로필을 사용한 첫 번째 세션 default 인덱스 0에서 |
co.haply.hub::*:0 | 프로필이 다음과 같이 시작하는 첫 번째 세션 co.haply.hub:: (전체 일치 와일드카드) |
:co.haply.hub::*:-1 | 지난 세션에서 co.haply.hub:: 네임스페이스 |
예시:
GET /inverse3/0/config/navigation?session=:default:0
프로필 이름 와일드카드
프로필 패턴은 두 가지 글로브 메타문자를 허용합니다:
| 메타문자 | 뜻 |
|---|---|
* | 어떤 문자열이든(빈 문자열 포함) 일치합니다 |
? | 정확히 하나의 문자와 일치합니다 |
그 외의 모든 등장인물 — 다음을 포함하여 :, ., -, [, ] — 는 문자 그대로 일치합니다(
와 같은 문자 클래스 [abc] 는 아니 (지원됨). 대소문자를 구분합니다.
맨 * (또는 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> 접미사 — it
일치하는 모든 항목을 다음과 동일한 리스트 엔벨로프에 담아 반환합니다. GET /sessions.
위의 모든 선택기 양식 — 다음을 포함하여 #42 그리고 프로필 패턴을 * —
표준 HTTP 클라이언트(Python)를 통해 있는 그대로 전송됩니다 requests, libhv,
curl, fetch). 클라이언트 측에서 URL 인코딩을 할 필요가 없습니다. 셸에서는
다음과 같은 내용을 포함하는 토큰을 따옴표로 묶어야 합니다. # 또는 * (예: --session "#42", --session "co.haply.hub::*:0")
셸이 이를 주석으로 인식하거나 로컬 파일에 대해 글로브 확장을 수행하지 못하도록 하기 위해
한 가지 예외: 그 ? glob 메타문자는 URL 쿼리 구분자입니다
in 경로. 경로 형식 선택자(예: /sessions/defaul?:0) 반드시
다음과 같이 퍼센트 인코딩되어야 합니다 %3F — GET /sessions/defaul%3F:0. 쿼리 형식의
선택자 (?session=defaul?:0), 첫 번째만 ? 쿼리를 분할하고
그 다음 ? 문자는 변경되지 않은 채로 전달됩니다.
웹소켓 연결에서, 당신은 는 세션 — 귀하의 configure 그리고
commands 항목은 자동으로 현재 세션의 기기를 대상으로 합니다. 세션
선택자는 다음의 경우에만 필요합니다. HTTP 요청(세션 간
원격 제어 포함 — 참조: 세션).