Skrivdata

Slutförd

Hittills har du utvecklat vägar för att läsa data för Tailwind Traders produkt-API. Du måste dock lägga till produkter också.

I den här lektionen diskuterar vi de olika metoder som vi kan använda för att lägga till eller uppdatera produkter och visa exempel på hur koden implementeras. I nästa lektion redigerar du faktiskt programkoden för att lägga till nya produkter och uppdatera befintliga.

Förstå hur du skriver data till API:et

Om du vill skriva data använder du en HTTP-metod för att ange om data är nya eller en uppdatering av befintliga data.

Vanliga HTTP-metoder är:

Metod beskrivning
POST Skapa en ny resurs.
PUT Uppdatera en befintlig resurs.
PATCH Uppdatera en del av en befintlig resurs.

PUT och PATCH är liknande. Skillnaden är att PUT ersätter hela resursen. PATCH ersätter endast de egenskaper som anges i begärandetexten.

Förstå hur du konfigurerar din app för att ta emot data

Om du vill ta emot data i webbprogrammet konfigurerar du Express baserat på formatet för inkommande data, till exempel HTML- eller JSON-format. Det här är vanliga steg, oavsett dataformat.

Kommentar

Data skickas via brödtexten i begäran.

  1. Importera en brödtextparser. Om du vill konvertera inkommande data till ett format som är läsbart importerar body-parser du biblioteket som är installerat med Express:

    let bodyParser = require('body-parser');
    
  2. Konfigurera datatyp. Konfigurera Express för att parsa inkommande brödtextdata i avsett format. Följande kod konverterar data till JSON:

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

De data som skickas från klienten är tillgängliga från req.body. Du kan läsa data och infoga dem i databasen.

Förstå hur du infogar en ny produkt

När du har konfigurerat en app för att ta emot data är du redo att skapa kod för att infoga data. Här är ett exempel på kod som infogar nya produkter i Tailwind Traders programdatalager:

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

Anropa det här API:et med en POST-begäran till /products med en JSON-brödtext för att infoga en ny produkt. Till exempel:

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

Förstå hur du uppdaterar hela produkten

Förutom att lägga till nya produkter behöver Tailwind Traders kunna ersätta befintliga produktdata. Här är ett exempel på koden som hanterar PUT begäranden:

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

Anropa det här API:et med en PUT-begäran till /products/:id med en JSON-brödtext för att uppdatera en produkt. Till exempel:

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

Förstå hur du uppdaterar en del av en produkt

Du behöver också funktionen för att ersätta en del av en produkts data i stället för alla. Här är ett exempel på koden som hanterar PATCH begäranden:

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

Anropa det här API:et med en PATCH-begäran till /producs/:id med en JSON-brödtext för att uppdatera en produkt. Till exempel:

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