Les 4 meilleures façons de faire des requêtes POST en Node.js

Apprenez les requêtes POST en Node.js avec http et axios. Envoyez/recevez des données variées.

Louis Dupont

Louis Dupont

5 June 2025

Les 4 meilleures façons de faire des requêtes POST en Node.js

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.

button

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.

NodeJs Website

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 :

  1. Importez le module http en utilisant la fonction require.
  2. 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.
  3. Utilisez la méthode http.request pour créer un objet de requête, en passant l'objet options 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 objet response comme paramètre.
  4. Utilisez l'objet request pour envoyer les données et terminer la requête. L'objet request est une instance de la classe http.ClientRequest, qui implémente l'interface WritableStream. Cela signifie que vous pouvez utiliser l'objet request comme un flux de données, et y écrire des données en utilisant la méthode request.write. Vous pouvez également utiliser la méthode request.end pour signaler la fin des données et de la requête. Vous pouvez également écouter des événements comme error et timeout sur l'objet request, et les gérer en conséquence.
  5. Utilisez l'objet response pour gérer les données et les en-têtes de la réponse. L'objet response est une instance de la classe http.IncomingMessage, qui implémente l'interface ReadableStream. Cela signifie que vous pouvez utiliser l'objet response comme un flux de données, et écouter des événements comme data, end et error. 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.
  6. Utilisez la méthode response.on pour enregistrer des écouteurs d'événements pour l'objet response. Par exemple, vous pouvez utiliser la méthode response.on('data', callback) pour écouter l'événement data, qui sera émis lorsqu'un morceau de données est reçu. La fonction de rappel aura un objet chunk comme paramètre, qui est un tampon de données. Vous pouvez utiliser la méthode chunk.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éthode response.on('end', callback) pour écouter l'événement end, 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éthode response.on('error', callback) pour écouter l'événement error, qui sera émis lorsqu'une erreur se produit pendant la réponse. La fonction de rappel aura un objet error 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 :

  1. Installez la bibliothèque axios en utilisant la commande npm : npm install axios.
  2. Importez la bibliothèque axios en utilisant la fonction require.
  3. 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 objet config 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éthode axios.post renverra une promesse, qui se résoudra en un objet response ou rejettera en un objet error.
  4. 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 objet error 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.
  5. 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éthode axios.post. Cela vous permettra d'écrire du code asynchrone de manière synchrone, et d'affecter l'objet response à une variable. Vous pouvez ensuite utiliser le bloc try/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 :

  1. 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 utiliser JSON.parse() pour reconvertir la réponse en un objet ou un tableau JavaScript.
  2. 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èque form-data avec npm, puis l'utiliser pour créer et envoyer l'objet de données de formulaire.
  3. 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.

button

Voici comment vous pouvez utiliser Apidog pour tester votre requête POST :

  1. Ouvrez Apidog et créez une nouvelle requête.
Select new request

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

Select Post request

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.

Verify the response

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.

button

Explore more

Comment utiliser Deepseek R1 en local avec Cursor

Comment utiliser Deepseek R1 en local avec Cursor

Apprenez à configurer DeepSeek R1 local avec Cursor IDE pour une aide au codage IA privée et économique.

4 June 2025

Comment exécuter Gemma 3n sur Android ?

Comment exécuter Gemma 3n sur Android ?

Apprenez à installer et exécuter Gemma 3n sur Android via Google AI Edge Gallery.

3 June 2025

Comment utiliser Claude Code avec GitHub Actions

Comment utiliser Claude Code avec GitHub Actions

Découvrez Claude Code avec GitHub Actions : revues de code, corrections de bugs, implémentation de fonctionnalités. Tutoriel pour développeurs.

29 May 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API