Maintenant que notre application express est prête, et que notre router Contact est créé, nous allons pouvoir récupérer les données depuis la requête POST.
En attendant le retour des développeurs d’Active Campaign, nous devons tout préparer pour envoyer le tout à l’api d’Active Campaign.
Récupération des données json POST avec express
Notre site web va envoyer en requête POST un contact, sous format json.
Notre API express node.js va récupérer cette requête et l’envoyer à ActiveCampaign.
Un bon schéma vaut mieux que mille explications :
Comment récupérer les données de la requête POST ?
Si l’on lit la documentation express, nous devons utiliser req.body.
Or, nous ne recevons rien, lorsque nous testons avec postman.
En continuant la lecture de la documentation, ils nous invitent à utiliser le module body-parser.
Une fois installé, il nous faut le référencer dans l’application :
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
En somme, ici, nous avons un middleware qui est capable d’analyser les données venant de la requête et de nous les transformer en json.
Même avec ces paramétrages, nous n’avons rien dans le body.
Nous avons testé avec :
- le type raw de Postman
- le type form-data
Et ça ne fonctionne pas !
Or lorsque nous essayons avec x-www-form-urlencoded : nous recevons bien des données dans le req.body.
Zoom sur x-www-form-urlencoded
Si l’on précise x-www-form-urlencoded, nous indiquons que les données seront envoyées sous forme de clé/valeur séparées par des &.
Vérification des données et renvoie du statut
Si les données reçues ne sont pas bonnes, on doit informer au développeur utilisant notre API qu’il s’est trompé.
C’est avec le statut de la réponse que l’on va pouvoir préciser cela, et un objet de retour contenant l’état de réussite.
L’un des meilleurs statuts pour informer que l’on a :
- une bonne url
- des données qui ont été bien comprises
- MAIS qui ne sont pas exploitables par l’api
est : le statut 422.
Prochaine étape : appel du module que l’on a développé !