Écrire des données
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.
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');
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"
}