Écrire des données

Effectué

Jusqu’à présent, vous avez développé des itinéraires afin de lire des données pour l’API des produits Tailwind Traders. Or, vous devez également ajouter des produits.

Dans cette unité, nous abordons les différentes méthodes que nous pouvons utiliser pour ajouter ou mettre à jour des produits et offrons des exemples de la façon dont ce code est implémenté. Dans l’unité suivante, vous allez modifier le code de votre application pour ajouter de nouveaux produits et mettre à jour des produits existants.

Comprendre comment écrire des données dans l’API

Pour écrire des données, utilisez une méthode HTTP afin d’indiquer si les données sont nouvelles ou s’il s’agit d’une mise à jour de données existantes.

Les méthodes HTTP courantes sont les suivantes :

Méthode Description
POST créer une ressource ;
PUT Mise à jour d’une ressource existante.
PATCH Mise à jour d’une partie d’une ressource existante.

PUT et PATCH sont similaires. La différence est que PUT remplace l’intégralité de la ressource. PATCH remplace uniquement les propriétés spécifiées dans le corps de la requête.

Comprendre comment configurer votre application pour recevoir des données

Pour recevoir des données dans votre application web, configurez Express en fonction du format des données entrantes, tel que HTML ou JSON. Quel que soit le format des données, vous effectuez des étapes communes.

Notes

Les données sont envoyées dans le corps de la requête.

  1. Importez un analyseur de corps. Pour convertir les données entrantes dans un format lisible, importez la bibliothèque body-parser installée avec Express :

    let bodyParser = require('body-parser');
    
  2. Configurez le type de données. Configurez Express pour analyser les données du corps entrant dans le format souhaité. Le code suivant convertit les données au format JSON :

    app.use(bodyParser.json({ extended: false }));
    

Les données envoyées à partir du client sont disponibles depuis req.body. Vous pouvez lire les données et les insérer dans la base de données.

Comprendre comment insérer un nouveau produit

Après avoir configuré une application pour recevoir des données, vous pouvez créer du code pour insérer des données. Voici un exemple de code qui insère de nouveaux produits dans le magasin de données d’application de Tailwind Trader :

// Insert a new product
app.post('/products', (req, res) => {
  const newProduct = req.body;
  newProduct.id = products.length + 1;
  products.push(newProduct);
  res.status(201).json(newProduct);
});

Appelez cette API avec une requête POST à /products avec un corps JSON pour insérer un nouveau produit. Par exemple :

{
  "name": "The Hobbit",
  "author": "J.R.R. Tolkien"
}

Comprendre comment mettre à jour l’intégralité du produit

Outre l’ajout de nouveaux produits, Tailwind Traders a besoin de remplacer les données de produits existantes. Voici un exemple de ce code, qui gère les requêtes PUT :

app.put('/products/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const updatedProduct = req.body;
  const index = products.findIndex(product => product.id === id);
  if (index !== -1) {
    products[index] = updatedProduct;
    res.json(updatedProduct);
  } else {
    res.status(404).send('Product not found');
  }
});

Appelez cette API avec une requête PUT à /products/:id avec un corps JSON pour mettre à jour un produit. Par exemple :

{
  "id": 1,
  "name": "The Hobbit",
  "author": "J.R.R. Tolkien"
}

Comprendre comment mettre à jour une partie d’un produit

Vous devez aussi pouvoir remplacer une partie des données d’un produit plutôt que toutes les données. Voici un exemple de ce code, qui gère les requêtes PATCH :

app.patch('/products/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const updates = req.body;
  const index = products.findIndex(product => product.id === id);
  if (index !== -1) {
    // overwrite existing properties with updates
    products[index] = {...products[index], ...updates};
    res.json(products[index]);
  } else {
    res.status(404).send('Product not found');
  }
});

Appelez cette API avec une requête PATCH à /producs/:id avec un corps JSON pour mettre à jour un produit. Par exemple :

{
  "author": "J.R.R. Tolkien"
}