구독자 (엔드포인트)
구독자는 데이터의 목적지 하나입니다: URL 하나, 데이터 종류 하나, 선택적 변환 스크립트 하나. 밖으로 나가는 트래픽에 관한 모든 것이 여기서 설정됩니다 — Courier가 데이터를 어딘가로 보내는 방법은 이것뿐입니다.
필드 참조
| 필드 | 의미 |
|---|---|
| 이름 | 표시 이름. 장부, 알림, context.endpointName에 사용됩니다 |
| 종류 | 이 구독자가 받는 데이터: workout, sleep, note(주석), weather. 구독자 하나 = 종류 하나 |
| URL | 목적지. HTTPS 필수 (로컬 테스트용으로는 일반 http://localhost 허용) |
| 메서드 | GET / POST / PUT / PATCH / DELETE — 기본값 POST |
| 헤더 | 모든 요청에 함께 전송되는 정적·비밀 아님 헤더 |
| 인증 | 비밀 값을 붙이는 방식: Bearer(Authorization: Bearer <secret>), 커스텀 헤더(헤더 이름 직접 지정), 쿼리 매개변수(매개변수 이름 직접 지정), 또는 없음 |
| 비밀 값 | iOS 키체인에 저장됩니다. 데이터베이스에도, 설정 백업에도 절대 들어가지 않습니다 |
| 본문 매개변수 | 정적 키–값 쌍. POST에서는 JSON 본문에 병합되고, 다른 메서드에서는 쿼리 문자열로 펼쳐집니다 |
| 경로 포함 | 운동 전용: GPS 트랙 첨부 (용량이 클 수 있음) |
| 심박 시계열 포함 | 운동 전용: 전체 심박수 시계열 첨부 (용량 큼) |
| 자동 발행 | 이 종류의 새 데이터가 도착하면 자동으로 배달합니다. 끄면 이 구독자는 수동/일괄 발행만 받습니다 |
| 연결된 날씨 | 수면 구독자 전용: 수면 발행이 성공하면 선택한 날씨 구독자에게 현재 날씨도 함께 전송합니다 |
| 하루 한 번만 날씨 | 연결된 날씨 사용 시: 그날의 첫 수면에만 날씨가 실립니다 (낮잠은 다시 보내지 않음) |
| 변환 스크립트 | 요청 본문을 만드는 선택적 JavaScript — JavaScript 변환 참조 |
요청은 어떤 모습인가
변환 스크립트가 없으면 본문은 해당 종류의 canonical 레코드입니다 — 안정적이고 버전이 관리되는 JSON 문서(스키마는 JavaScript 변환 참조)에 본문 매개변수가 병합된 형태입니다. 모든 요청에는 Idempotency-Key 헤더도 실립니다. 정확한 의미는 발행과 동기화를 참조하세요.
2xx 응답은 성공으로 간주됩니다. 그 외의 상태라면 해당 항목은 재시도/주의 흐름으로 들어가며, 응답 내용은 발행 내역에 기록됩니다.
구독자 테스트하기
편집기의 테스트 버튼은 최근 샘플 레코드를 전체 파이프라인 — 변환 스크립트, 인증, 헤더 포함 — 에 통과시켜 보내고, HTTP 상태와 응답 본문을 앱 안에서 보여 줍니다. 서버가 만족할 때까지 활용한 뒤 자동 발행을 켜세요.
활용 패턴
- 같은 URL, 두 종류: 같은 엔드포인트를 가리키는 구독자를 두 개 추가하고, 하나는 운동용, 하나는 수면용으로 쓰세요. 서버는 페이로드로 분기하면 됩니다.
- 날씨 일기:
weather구독자를 만든 뒤 수면 구독자에서 연결하세요 — 매일 아침의 발행에 어젯밤 수면과 나란히 그날의 날씨가 실립니다. - 팬아웃: 같은 종류를 여러 구독자가 받을 수 있습니다. 발행은 각각 개별적으로 추적되며, 한 엔드포인트가 실패해도 다른 엔드포인트를 절대 막지 않습니다.