Retour à la leçonMission
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 ?