본문으로 건너뛰기

웹 스토리지 (Web Storage)

정적 웹사이트 호스팅 기능입니다. 콘솔에서 웹 스토리지를 생성하고 배포한 뒤, SDK로는 페이지별 메타데이터(SEO/OG 태그)를 관리할 수 있습니다.

⚠️ 웹 스토리지 생성/배포 자체는 콘솔과 REST API 또는 Connect Base CLI 로 진행합니다. SDK에는 cb.webStorage 모듈이 없으며, SEO 메타데이터만 cb.storage.setPageMeta 등으로 다룰 수 있습니다.

🔐 생성/배포/승격 계열 REST 엔드포인트는 Secret Key(cb_sk_*)가 필요합니다. 아래 HTTP API 절을 참고하세요. 페이지 메타 API 는 Public Key 만으로 그대로 동작합니다.

페이지 메타 (OG 태그 / JSON-LD)

typescript
await cb.storage.setPageMeta('web_storage_id', {
  path: '/products/123',
  title: '최신 스마트폰 - 내 쇼핑몰',
  description: '최고의 성능, 최저가 보장',
  image: 'https://example.com/product.jpg',
  og_type: 'product',
  json_ld: JSON.stringify({
    '@context': 'https://schema.org',
    '@type': 'Product',
    name: '최신 스마트폰',
    offers: { '@type': 'Offer', price: '999000', priceCurrency: 'KRW' }
  })
})

일괄 설정 (최대 100개)

typescript
await cb.storage.batchSetPageMeta('web_storage_id', {
  pages: [
    { path: '/products/1', title: '상품 1', description: '설명 1' },
    { path: '/products/2', title: '상품 2', description: '설명 2' }
  ]
})

조회 / 삭제

typescript
// 단일 조회
const meta = await cb.storage.getPageMeta('web_storage_id', '/products/123')

// 페이지네이션 목록
const list = await cb.storage.listPageMetas('web_storage_id', { limit: 20, offset: 0 })

// 단일 삭제
await cb.storage.deletePageMeta('web_storage_id', '/products/123')

// 전체 삭제
await cb.storage.deleteAllPageMetas('web_storage_id')

함께 보기

HTTP API

🔐 여기 있는 엔드포인트는 Secret Key 가 필요합니다.

X-Public-Key(cb_pk_*) 는 브라우저 번들에 그대로 실려 나가는 공개 식별자라 배포 권한을 증명하지 못합니다. 그래서 목록/생성/배포/승격 호출은 X-Public-Key함께 Authorization: Bearer cb_sk_* 를 요구합니다. deploy/manifest, deploy/incremental, deploy/presign, deployments 도 동일합니다. 누락하면 401 SECRET_KEY_REQUIRED 가 납니다.

Secret Key 는 절대 클라이언트 코드나 저장소에 넣지 마세요. CI 시크릿이나 환경변수 (CONNECTBASE_SECRET_KEY)로 주입하세요.

CLI 를 쓰신다면 최신 버전으로 업데이트만 하면 됩니다 (npm i -g connectbase-client@latest). .connectbasercsecretKey 또는 CONNECTBASE_SECRET_KEY 를 자동으로 실어 보냅니다.

위의 cb.storage.setPageMeta 등 페이지 메타 API 는 변경 없이 Public Key 만으로 동작합니다.

웹 스토리지 목록 조회 / 생성

bash
# 목록
curl -X GET "https://api.connectbase.world/v1/public/storages/webs" \
  -H "X-Public-Key: cb_pk_your_public_key" \
  -H "Authorization: Bearer cb_sk_your_secret_key"

# 생성
curl -X POST "https://api.connectbase.world/v1/public/storages/webs" \
  -H "X-Public-Key: cb_pk_your_public_key" \
  -H "Authorization: Bearer cb_sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-website",
    "description": "내 웹사이트"
  }'

CLI 배포

bash
# 프로덕션
curl -X POST "https://api.connectbase.world/v1/public/storages/webs/web_xxx/deploy" \
  -H "X-Public-Key: cb_pk_your_public_key" \
  -H "Authorization: Bearer cb_sk_your_secret_key" \
  -F "[email protected]"

# QA 채널 배포 (promote_mode 무관 QA-only, --dev 별칭)
curl -X POST "https://api.connectbase.world/v1/public/storages/webs/web_xxx/deploy?target=qa" \
  -H "X-Public-Key: cb_pk_your_public_key" \
  -H "Authorization: Bearer cb_sk_your_secret_key" \
  -F "[email protected]"

# QA 검증 후 production 승격 (포인터 스왑 — 재빌드 없음)
curl -X POST "https://api.connectbase.world/v1/public/storages/webs/web_xxx/promote" \
  -H "X-Public-Key: cb_pk_your_public_key" \
  -H "Authorization: Bearer cb_sk_your_secret_key"

📌 보통 npx connectbase-client deploy [dir] CLI 가 이 엔드포인트를 자동으로 호출합니다. 자세한 페이지 메타 엔드포인트는 REST API — Web Storage 를 참고하세요.