Voulez-vous apprendre à faire des requêtes POST dans Node.js ? Si oui, vous êtes au bon endroit. Dans cet article de blog, je vais vous montrer comment utiliser le module http
intégré et la bibliothèque populaire axios
pour faire des requêtes POST dans Node.js. Ensuite, utilisez Apidog pour tester les requêtes POST avec une interface visuelle et les partager avec votre équipe.
Qu'est-ce qu'une requête HTTP POST dans NodeJS ?
Une requête HTTP POST dans Node.js est utilisée pour envoyer des données à un serveur afin de créer ou de mettre à jour une ressource. Les requêtes POST sont couramment utilisées lors de la soumission de données de formulaire, du téléchargement de fichiers ou de l'envoi de données à stocker dans une base de données.
Dans Node.js, vous pouvez faire une requête POST en utilisant le module http intégré ou une bibliothèque tierce comme Axios. Les données à envoyer avec la requête sont incluses dans le corps de la requête. Le serveur peut ensuite accéder à ces données et les traiter pour effectuer l'action souhaitée.
Node.js fournit un modèle d'E/S non bloquant et piloté par les événements qui le rend efficace pour gérer les applications gourmandes en données et en temps réel. Sa capacité à gérer les requêtes POST et à traiter les données en fait un choix populaire pour la création d'API Web, d'applications de chat en temps réel et d'autres types d'applications côté serveur.

Comment envoyer une requête POST dans Node.js ?
Maintenant, nous allons vous montrer plusieurs méthodes pour envoyer et faire des requêtes POST dans Node.js, y compris le module HTTP et la bibliothèque Axios. Vous pouvez choisir l'approche qui correspond le mieux aux exigences et aux préférences de votre projet.
1. Envoyer une requête POST dans Node.js en utilisant le module http
Node.js est souvent utilisé pour créer des serveurs Web, des applications Web et des API Web. Node.js fournit également un module http
intégré qui vous permet de faire des requêtes et des réponses HTTP.
Pour faire une requête POST dans Node.js en utilisant le module http
, vous devez suivre ces étapes :
- Importez le module
http
en utilisant la fonctionrequire
. - Créez un objet
options
qui contient les informations sur la requête POST, telles que le nom d'hôte, le port, le chemin, la méthode, les en-têtes et les données. - Utilisez la méthode
http.request
pour créer un objet de requête, en passant l'objetoptions
comme premier argument et une fonction de rappel comme deuxième argument. La fonction de rappel sera exécutée lorsque la réponse sera reçue, et elle aura un objetresponse
comme paramètre. - Utilisez l'objet
request
pour envoyer les données et terminer la requête. L'objetrequest
est une instance de la classehttp.ClientRequest
, qui implémente l'interfaceWritableStream
. Cela signifie que vous pouvez utiliser l'objetrequest
comme un flux de données, et y écrire des données en utilisant la méthoderequest.write
. Vous pouvez également utiliser la méthoderequest.end
pour signaler la fin des données et de la requête. Vous pouvez également écouter des événements commeerror
ettimeout
sur l'objetrequest
, et les gérer en conséquence. - Utilisez l'objet
response
pour gérer les données et les en-têtes de la réponse. L'objetresponse
est une instance de la classehttp.IncomingMessage
, qui implémente l'interfaceReadableStream
. Cela signifie que vous pouvez utiliser l'objetresponse
comme un flux de données, et écouter des événements commedata
,end
eterror
. Vous pouvez également utiliser la propriétéresponse.statusCode
pour obtenir le code d'état de la réponse, et la propriétéresponse.headers
pour obtenir les en-têtes de la réponse. - Utilisez la méthode
response.on
pour enregistrer des écouteurs d'événements pour l'objetresponse
. Par exemple, vous pouvez utiliser la méthoderesponse.on('data', callback)
pour écouter l'événementdata
, qui sera émis lorsqu'un morceau de données est reçu. La fonction de rappel aura un objetchunk
comme paramètre, qui est un tampon de données. Vous pouvez utiliser la méthodechunk.toString()
pour convertir le tampon en une chaîne, et l'ajouter à une variable pour stocker toutes les données de la réponse. Vous pouvez également utiliser la méthoderesponse.on('end', callback)
pour écouter l'événementend
, qui sera émis lorsque la réponse est terminée. La fonction de rappel n'aura aucun paramètre, et vous pouvez l'utiliser pour effectuer des actions finales, telles que la journalisation ou l'analyse des données de la réponse. Vous pouvez également utiliser la méthoderesponse.on('error', callback)
pour écouter l'événementerror
, qui sera émis lorsqu'une erreur se produit pendant la réponse. La fonction de rappel aura un objeterror
comme paramètre, et vous pouvez l'utiliser pour gérer l'erreur, comme la journalisation ou la lancer.
Voici un exemple de la façon de faire une requête POST dans Node.js en utilisant le module http
:
// Importez le module http
const http = require('http');
// Créez un objet options
const options = {
hostname: 'jsonplaceholder.typicode.com',
port: 80,
path: '/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
};
// Créez un objet de données
const data = {
title: 'Hello, world!',
body: 'This is a test post',
userId: 1
};
// Convertissez l'objet de données en chaîne
const dataString = JSON.stringify(data);
// Mettez à jour l'objet options avec la longueur des données
options.headers['Content-Length'] = dataString.length;
// Créez un objet de requête
const request = http.request(options, (response) => {
// Initialisez une variable pour stocker les données de la réponse
let data = '';
// Écoutez l'événement data
response.on('data', (chunk) => {
// Ajoutez le morceau à la variable data
data += chunk.toString();
});
// Écoutez l'événement end
response.on('end', () => {
// Enregistrez le code d'état et les en-têtes
console.log(`Status code: ${response.statusCode}`);
console.log(`Headers: ${JSON.stringify(response.headers)}`);
// Analysez les données en tant que JSON
const post = JSON.parse(data);
// Enregistrez les informations de l'article
console.log(`Post ID: ${post.id}`);
console.log(`Post Title: ${post.title}`);
console.log(`Post Body: ${post.body}`);
console.log(`Post User ID: ${post.userId}`);
});
// Écoutez l'événement error
response.on('error', (error) => {
// Lancez l'erreur
throw error;
});
});
// Écrivez les données dans l'objet de requête
request.write(dataString);
// Terminez l'objet de requête
request.end();
2. Faire des requêtes POST dans Node.js en utilisant la bibliothèque axios
Le module http
est un module de bas niveau qui fournit des fonctionnalités de base pour faire des requêtes et des réponses HTTP. Cependant, si vous souhaitez utiliser un module de niveau supérieur et plus convivial, vous pouvez utiliser la bibliothèque axios
. Axios est une bibliothèque populaire et puissante qui vous permet de faire des requêtes HTTP et de gérer les réponses en utilisant des promesses et la syntaxe async/await. Axios prend également en charge des fonctionnalités telles que les intercepteurs, les transformateurs, les délais d'attente, les jetons d'annulation, et plus encore.
Pour faire une requête POST dans Node.js en utilisant la bibliothèque axios
, vous devez suivre ces étapes :
- Installez la bibliothèque
axios
en utilisant la commandenpm
:npm install axios
. - Importez la bibliothèque
axios
en utilisant la fonctionrequire
. - Utilisez la méthode
axios.post
pour faire la requête POST, en passant l'URL de la ressource comme premier argument et l'objet de données comme deuxième argument. Vous pouvez également passer un objetconfig
facultatif comme troisième argument, qui peut contenir des informations sur la requête POST, telles que les en-têtes, les paramètres, le délai d'attente, et plus encore. La méthodeaxios.post
renverra une promesse, qui se résoudra en un objetresponse
ou rejettera en un objeterror
. - Utilisez la méthode
catch
pour gérer la promesse rejetée, en passant une fonction de rappel comme premier argument. La fonction de rappel aura un objeterror
comme paramètre, qui contient le message d'erreur, le code, la requête et la réponse. Vous pouvez utiliser la propriétéerror.response
pour accéder à l'objet de réponse, et la propriétéerror.request
pour accéder à l'objet de requête. - Alternativement, vous pouvez utiliser la syntaxe
async/await
pour faire la requête POST et gérer la réponse. Pour ce faire, vous devez utiliser le mot-cléasync
avant la fonction qui contient la requête POST, et le mot-cléawait
avant la méthodeaxios.post
. Cela vous permettra d'écrire du code asynchrone de manière synchrone, et d'affecter l'objetresponse
à une variable. Vous pouvez ensuite utiliser le bloctry/catch
pour gérer les erreurs qui peuvent survenir pendant la requête POST.
Voici un exemple de la façon de faire une requête POST dans Node.js en utilisant la bibliothèque axios
:
// Importez la bibliothèque axios
const axios = require('axios');
// Créez un objet de données
const data = {
title: 'Hello, world!',
body: 'This is a test post',
userId: 1
};
// Faites la requête POST en utilisant la méthode then
axios.post('http://jsonplaceholder.typicode.com/posts', data, {
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
}).then((response) => {
// Enregistrez le code d'état et les en-têtes
console.log(`Status code: ${response.status}`);
console.log(`Headers: ${JSON.stringify(response.headers)}`);
// Enregistrez les informations de l'article
console.log(`Post ID: ${response.data.id}`);
console.log(`Post Title: ${response.data.title}`);
console.log(`Post Body: ${response.data.body}`);
console.log(`Post User ID: ${response.data.userId}`);
}).catch((error) => {
// Enregistrez le message d'erreur et le code
console.log(`Error message: ${error.message}`);
console.log(`Error code: ${error.code}`);
// Enregistrez l'état et les données de la réponse si disponibles
if (error.response) {
console.log(`Response status: ${error.response.status}`);
console.log(`Response data: ${JSON.stringify(error.response.data)}`);
}
// Enregistrez la méthode et le chemin de la requête si disponibles
if (error.request) {
console.log(`Request method: ${error.request.method}`);
console.log(`Request path: ${error.request.path}`);
}
});
// Faites la requête POST en utilisant la syntaxe async/await
async function createPost() {
try {
// Attendez la requête POST et affectez l'objet de réponse à une variable
const response = await axios.post('http://jsonplaceholder.typicode.com/posts', data, {
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
});
// Enregistrez le code d'état et les en-têtes
console.log(`Status code: ${response.status}`);
console.log(`Headers: ${JSON.stringify(response.headers)}`);
// Enregistrez les informations de l'article
console.log(`Post ID: ${response.data.id}`);
console.log(`Post Title: ${response.data.title}`);
console.log(`Post Body: ${response.data.body}`);
console.log(`Post User ID: ${response.data.userId}`);
} catch (error) {
// Enregistrez le message d'erreur et le code
console.log(`Error message: ${error.message}`);
console.log(`Error code: ${error.code}`);
// Enregistrez l'état et les données de la réponse si disponibles
if (error.response) {
console.log(`Response status: ${error.response.status}`);
console.log(`Response data: ${JSON.stringify(error.response.data)}`);
}
// Enregistrez la méthode et le chemin de la requête si disponibles
if (error.request) {
console.log(`Request method: ${error.request.method}`);
console.log(`Request path: ${error.request.path}`);
}
}
}
// Appelez la fonction createPost
createPost();
3. Envoyer et recevoir des données dans Node.js
L'envoi et la réception de données dans Node.js impliquent quelques étapes clés. Lorsque vous envoyez une requête POST dans Node.js, vous souhaitez généralement envoyer des données au serveur Web et recevoir une réponse. Par exemple, vous pouvez souhaiter envoyer des informations utilisateur pour créer un nouveau compte et recevoir un message de confirmation ou un jeton. Ou, vous pouvez envoyer des données de fichier pour télécharger un fichier et récupérer une URL de fichier ou un message d'état.
Pour gérer différents types de données, vous aurez besoin de différentes méthodes et modules :
- Données JSON : Si vos données sont un simple objet ou tableau, vous pouvez les convertir en une chaîne JSON en utilisant
JSON.stringify()
. Cette méthode crée une chaîne avec des paires clé-valeur et des tableaux, ce qui facilite l'envoi et la réception de données. Pour travailler avec des réponses JSON, vous pouvez utiliserJSON.parse()
pour reconvertir la réponse en un objet ou un tableau JavaScript. - Données de fichier : Lorsque vous traitez des fichiers, vous pouvez utiliser la bibliothèque
form-data
pour créer un objet de données de formulaire et y ajouter le fichier. Cette bibliothèque imite le comportement des formulaires HTML, vous permettant d'envoyer du texte et des données de fichier. Vous devrez installer la bibliothèqueform-data
avec npm, puis l'utiliser pour créer et envoyer l'objet de données de formulaire. - Flux : Pour le streaming de données, vous pouvez utiliser le module
stream
intégré. Les flux vous permettent de gérer des données volumineuses ou continues sans tout charger en mémoire.
Vous pouvez créer des flux lisibles, inscriptibles ou de transformation en fonction de vos besoins. Les flux sont utiles pour gérer les données audio, vidéo ou réseau, et vous pouvez canaliser les données d'un flux à un autre pour le traitement ou l'envoi au serveur.
4. Utilisation d'Apidog pour tester votre requête POST NodeJs
Apidog est un outil puissant pour tester les API. Il vous permet de créer et d'enregistrer des requêtes API, de les organiser en collections et de les partager avec votre équipe.
Voici comment vous pouvez utiliser Apidog pour tester votre requête POST :
- Ouvrez Apidog et créez une nouvelle requête.

2. Définissez la méthode de requête sur POST.

3. Entrez l'URL de la ressource que vous souhaitez mettre à jour. Ajoutez tous les en-têtes ou paramètres supplémentaires que vous souhaitez inclure, puis cliquez sur le bouton « Envoyer » pour envoyer la requête.

4. Vérifiez que la réponse correspond à ce que vous attendiez.

Conclusion
Dans cet article de blog, je vous ai montré comment faire des requêtes POST dans Node.js en utilisant le module http
et la bibliothèque axios
. Je vous ai également montré comment envoyer et recevoir des données dans différents formats et scénarios. J'espère que vous avez appris quelque chose d'utile et que vous avez aimé lire cet article.