Retour à la leçon
Mission

Mission : le webhook Stripe qui accepte n'importe quoi

Sécuriser un Route Handler POST en validant son payload et choisir correctement entre Server Action et Route Handler.

Contexte

app/api/products/route.ts expose un POST qui fait directement db.insert("products").values(body) sans jamais vérifier le contenu de body — un client pourrait envoyer un champ id ou ownerId arbitraire. Par ailleurs, un développeur hésite : pour un webhook Stripe qui doit notifier l'app d'un paiement confirmé, doit-il écrire une Server Action ou un Route Handler ?