Vapid 공개키 조회
API Endpoint
GET /api/push/vapid-key
서비스의 VAPID 공개 키를 조회합니다. 클라이언트에서 푸시 구독을 생성할 때 필요한 공개 키를 반환합니다.
엔드포인트: GET https://api.pushmanager.kr/api/push/vapid-key
GET /api/push/vapid-key
X-API-Key: <서비스-API-키>
Origin: <등록된-도메인>
X-API-Key: <서비스-API-키>
Origin: <등록된-도메인>
Parameters
이 엔드포인트는 추가 파라미터가 필요하지 않습니다. 인증 헤더만으로 요청할 수 있습니다.
Discussion
VAPID(Voluntary Application Server Identification) 공개 키는 브라우저에서 푸시 구독을 생성할 때 필요한 인증 정보입니다. 이 키를 사용하여 사용자의 브라우저에서
navigator.serviceWorker.ready.then(registration => registration.pushManager.subscribe())
메서드를 호출할 수 있습니다.
보안: 이 공개 키는 클라이언트에 노출되어도 안전합니다
사용 목적: 브라우저 푸시 구독 생성 시에만 사용
인증: 유효한 X-API-Key 헤더와 Origin 검증 필요
사용 목적: 브라우저 푸시 구독 생성 시에만 사용
인증: 유효한 X-API-Key 헤더와 Origin 검증 필요
응답 형식
성공 응답 (200 OK)
{
"success": true,
"data": {
"vapidPublicKey": "BGtFqB7V9OZFKv7yZj8r5z6KcGqKh...",
"siteName": "내 웹사이트"
}
}
"success": true,
"data": {
"vapidPublicKey": "BGtFqB7V9OZFKv7yZj8r5z6KcGqKh...",
"siteName": "내 웹사이트"
}
}
클라이언트 사용 예시
// 1. VAPID 공개 키 조회
const response = await fetch('/api/push/vapid-key', {
headers: {
'X-API-Key': 'your-api-key'
}
});
const { data } = await response.json();
// 2. 푸시 구독 생성
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: data.vapidPublicKey
});
const response = await fetch('/api/push/vapid-key', {
headers: {
'X-API-Key': 'your-api-key'
}
});
const { data } = await response.json();
// 2. 푸시 구독 생성
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: data.vapidPublicKey
});