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
httpen utilisant la fonctionrequire. - Créez un objet
optionsqui 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.requestpour créer un objet de requête, en passant l'objetoptionscomme 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 objetresponsecomme paramètre. - Utilisez l'objet
requestpour envoyer les données et terminer la requête. L'objetrequestest une instance de la classehttp.ClientRequest, qui implémente l'interfaceWritableStream. Cela signifie que vous pouvez utiliser l'objetrequestcomme un flux de données, et y écrire des données en utilisant la méthoderequest.write. Vous pouvez également utiliser la méthoderequest.endpour signaler la fin des données et de la requête. Vous pouvez également écouter des événements commeerrorettimeoutsur l'objetrequest, et les gérer en conséquence. - Utilisez l'objet
responsepour gérer les données et les en-têtes de la réponse. L'objetresponseest une instance de la classehttp.IncomingMessage, qui implémente l'interfaceReadableStream. Cela signifie que vous pouvez utiliser l'objetresponsecomme un flux de données, et écouter des événements commedata,endeterror. Vous pouvez également utiliser la propriétéresponse.statusCodepour obtenir le code d'état de la réponse, et la propriétéresponse.headerspour obtenir les en-têtes de la réponse. - Utilisez la méthode
response.onpour 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 objetchunkcomme 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 objeterrorcomme 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
axiosen utilisant la commandenpm:npm install axios. - Importez la bibliothèque
axiosen utilisant la fonctionrequire. - Utilisez la méthode
axios.postpour 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 objetconfigfacultatif 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.postrenverra une promesse, qui se résoudra en un objetresponseou rejettera en un objeterror. - Utilisez la méthode
catchpour gérer la promesse rejetée, en passant une fonction de rappel comme premier argument. La fonction de rappel aura un objeterrorcomme paramètre, qui contient le message d'erreur, le code, la requête et la réponse. Vous pouvez utiliser la propriétéerror.responsepour accéder à l'objet de réponse, et la propriétéerror.requestpour accéder à l'objet de requête. - Alternativement, vous pouvez utiliser la syntaxe
async/awaitpour faire la requête POST et gérer la réponse. Pour ce faire, vous devez utiliser le mot-cléasyncavant la fonction qui contient la requête POST, et le mot-cléawaitavant 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/catchpour 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-datapour 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-dataavec 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
streaminté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.



