Dans Node.js, la gestion des requêtes et des réponses HTTP est une partie fondamentale de la création de serveurs web. L'objet de requête (req) et l'objet de réponse (res) sont les deux principaux objets avec lesquels vous interagissez pour traiter les données entrantes et sortantes dans votre serveur HTTP.

L'Objet de Requête (req)

L'objet req est une instance de http.IncomingMessage et est passé comme le premier paramètre au gestionnaire de requêtes.

Voici quelques propriétés et méthodes couramment utilisées de req:

  • req.url : L'URL de la requête.
  • req.method : La méthode HTTP de la requête, par exemple GET, POST, etc.
  • req.headers : Un objet contenant les en-têtes de la requête.
  • req.body : Le corps de la requête, qui n'est pas disponible directement avec le module http de base. Pour y accéder, vous devez utiliser un middleware comme body-parser avec Express.
  • req.params : Contient les paramètres de route; également utilisé avec Express ou d'autres frameworks.
  • req.query : Un objet contenant la chaîne de requête analysée.

L'Objet de Réponse (res)

L'objet res est une instance de http.ServerResponse et est passé comme le deuxième paramètre au gestionnaire de requêtes.

Voici quelques propriétés et méthodes couramment utilisées de res:

  • res.writeHead(statusCode[, statusMessage][, headers]) : Écrit les en-têtes de la réponse avec le code d'état et le message d'état optionnel.
  • res.setHeader(name, value) : Définit un en-tête unique.
  • res.statusCode : Permet de définir le code d'état de la réponse.
  • res.end([data][, encoding][, callback]) : Signale au serveur que tous les en-têtes et le corps de la réponse ont été envoyés; c'est la méthode que le serveur doit appeler une fois qu'il a terminé de traiter la requête.
  • res.write(data[, encoding][, callback]) : Envoie un chunk de corps de réponse.
  • res.send(data) : Envoie une réponse (utilisé avec Express).
  • res.json(json) : Envoie une réponse JSON (utilisé avec Express).

Exemple de Gestion des Requêtes et des Réponses

Voici un exemple simple de serveur HTTP en Node.js qui montre comment gérer les requêtes et les réponses :

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.url === '/api/data') {
    // Gestion d'une requête GET sur '/api/data'
    if (req.method === 'GET') {
      res.writeHead(200, {'Content-Type': 'application/json'});
      res.end(JSON.stringify({ data: 'Données ici' }));
    }
  } else {
    // Réponse par défaut pour toutes les autres requêtes
    res.writeHead(404, {'Content-Type': 'text/plain'});
    res.end('404 Non Trouvé');
  }
});

server.listen(3000, () => {
  console.log('Serveur en écoute sur le port 3000...');
});

 

Dans cet exemple, le serveur répond avec des données JSON lorsque la route /api/data est demandée avec une méthode GET. Pour toutes les autres routes, il répond avec un code d'état 404.

Middleware pour la Gestion des Corps de Requête

Dans un cadre plus complexe comme Express, vous auriez souvent besoin d'un middleware pour traiter le corps de la requête, en particulier pour les méthodes POST et PUT.

const express = require('express');
const bodyParser = require('body-parser');

const app = express();

// Middleware pour parser le corps de requêtes JSON
app.use(bodyParser.json());

app.post('/api/data', (req, res) => {
  console.log(req.body); // Le corps de la requête est maintenant disponible
  res.status(200).json({ message: 'Données reçues' });
});

app.listen(3000, () => {
  console.log('Serveur Express en écoute sur le port 3000...');
});

 

request.rest

###
POST http://localhost:3000/api/data
Content-Type: application/json

{
    "id": 1,
    "name": "toto"
}

Dans le terminal vous devez avoir :

Dans cet exemple Express, le middleware body-parser est utilisé pour analyser le corps de la requête JSON, rendant les données facilement accessibles via req.body.

La gestion des requêtes et des réponses est essentielle pour créer des applications web dynamiques et interactives. En utilisant Node.js et des frameworks comme Express, vous pouvez construire des serveurs web puissants avec des fonctionnalités complètes pour répondre aux besoins de vos utilisateurs.

Modifié le: lundi 27 novembre 2023, 09:28