ヘルスチェック /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(),
});
}