Gegevens schrijven

Voltooid

Tot nu toe hebt u routes ontwikkeld om gegevens te lezen voor de Producten-API van Tailwind Traders. U moet echter ook producten toevoegen.

In deze les bespreken we de verschillende methoden die we kunnen gebruiken om producten toe te voegen of bij te werken en laten we voorbeelden zien van hoe die code wordt geïmplementeerd. In de volgende les bewerkt u uw toepassingscode om nieuwe producten toe te voegen en bestaande producten bij te werken.

Informatie over het schrijven van gegevens naar de API

Als u gegevens wilt schrijven, gebruikt u een HTTP-methode om aan te geven of de gegevens nieuw zijn of een update naar bestaande gegevens.

Algemene HTTP-methoden zijn:

Wijze Description
POST Maak een nieuwe resource.
PUT Een bestaande resource bijwerken.
PATCH Een deel van een bestaande resource bijwerken.

PUT en PATCH zijn vergelijkbaar. Het verschil is dat PUT de hele resource vervangt. PATCH vervangt alleen de eigenschappen die zijn opgegeven in de aanvraagbody.

Meer informatie over het configureren van uw app voor het ontvangen van gegevens

Als u gegevens wilt ontvangen in uw webtoepassing, configureert u Express op basis van de indeling van de binnenkomende gegevens, zoals HTML- of JSON-indeling. Dit zijn veelvoorkomende stappen, ongeacht de gegevensindeling.

Notitie

Gegevens worden verzonden via de hoofdtekst van de aanvraag.

  1. Importeer een bodyparser. Als u de binnenkomende gegevens wilt converteren naar een indeling die leesbaar is, importeert u de body-parser bibliotheek die is geïnstalleerd met Express:

    let bodyParser = require('body-parser');
    
  2. Gegevenstype configureren. Configureer Express om de binnenkomende hoofdtekstgegevens te parseren in de beoogde indeling. Met de volgende code worden de gegevens geconverteerd naar JSON:

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

De gegevens die vanaf de client worden verzonden, zijn beschikbaar via req.body. U kunt de gegevens lezen en invoegen in de database.

Meer informatie over het invoegen van een nieuw product

Nadat u een app hebt geconfigureerd voor het ontvangen van gegevens, kunt u code maken om gegevens in te voegen. Hier volgt een voorbeeld van een code waarmee nieuwe producten worden ingevoegd in het toepassingsgegevensarchief van Tailwind Traders:

// 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);
});

Roep deze API aan met een POST-aanvraag naar /products met een JSON-hoofdtekst om een nieuw product in te voegen. Voorbeeld:

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

Meer informatie over het bijwerken van het hele product

Naast het toevoegen van nieuwe producten heeft Tailwind Traders de mogelijkheid nodig om bestaande productgegevens te vervangen. Hier volgt een voorbeeld van die code, waarmee aanvragen worden verwerkt 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');
  }
});

Roep deze API aan met een PUT-aanvraag naar /products/:id met een JSON-hoofdtekst om een product bij te werken. Voorbeeld:

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

Meer informatie over het bijwerken van een deel van een product

U hebt ook de mogelijkheid nodig om een deel van de gegevens van een product te vervangen in plaats van alle gegevens. Hier volgt een voorbeeld van die code, waarmee aanvragen worden verwerkt 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');
  }
});

Roep deze API aan met een PATCH-aanvraag naar /producs/:id met een JSON-hoofdtekst om een product bij te werken. Voorbeeld:

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