SCALE — Build Lab

ヘルスチェック /api/health

必須 運用

DB接続・KV接続・外部APIの稼働状況を返すエンドポイント。

なぜ必要?

監視サービス(UptimeRobot等)から叩いて落ちたら即通知。

どう実装する?

/api/health で各依存先に ping → JSON で状態返却。

コード例
ts
export async function GET() {
  const checks = await Promise.allSettled([
    db.execute('SELECT 1'),
    KV.get('healthcheck'),
    fetch('https://api.stripe.com/v1/charges?limit=1', { headers: { Authorization: `Bearer ${process.env.STRIPE_SECRET_KEY}` } })
  ]);
  return Response.json({
    status: checks.every(c => c.status === 'fulfilled') ? 'ok' : 'degraded',
    checks: checks.map(c => c.status),
    timestamp: new Date().toISOString(),
  });
}

ヘルスチェック /api/health

:LiTarget: 何のために?

監視サービス(UptimeRobot等)から叩いて落ちたら即通知。

:LiSparkle: どう実装する?

/api/health で各依存先に ping → JSON で状態返却。

:LiCode: コード例

export async function GET() {
  const checks = await Promise.allSettled([
    db.execute('SELECT 1'),
    KV.get('healthcheck'),
    fetch('https://api.stripe.com/v1/charges?limit=1', { headers: { Authorization: `Bearer ${process.env.STRIPE_SECRET_KEY}` } })
  ]);
  return Response.json({
    status: checks.every(c => c.status === 'fulfilled') ? 'ok' : 'degraded',
    checks: checks.map(c => c.status),
    timestamp: new Date().toISOString(),
  });
}