Scrivere dati

Completato

Finora sono stati sviluppati route per leggere i dati per l’API dei prodotti Tailwind Traders. Tuttavia, è necessario aggiungere anche i prodotti.

In questa unità, vengono illustrati i diversi metodi che è possibile usare per aggiungere o aggiornare i prodotti e vengono mostrati esempi di implementazione del codice. Nell'unità successiva, si modificherà il codice dell'applicazione per aggiungere nuovi prodotti e aggiornare quelli esistenti.

Informazioni su come scrivere dati nell'API

Per scrivere i dati, usare un metodo HTTP per indicare se i dati sono nuovi o un aggiornamento di quelli esistenti.

I metodi HTTP più comuni sono:

metodo Descrizione
POST Creare una nuova risorsa.
PUT Aggiornare una risorsa esistente.
PATCH Aggiorna una parte di una risorsa esistente.

PUT e PATCH sono simili. La differenza è che PUT sostituisce l'intera risorsa. PATCH sostituisce solo le proprietà specificate nel corpo della richiesta.

Informazioni su come configurare l'app per ricevere i dati

Per ricevere dati nell’applicazione Web, è possibile configurare Express in base al formato dei dati in ingresso, ad esempio HTML o JSON. La conversione e la configurazione dei dati sono passaggi comuni, indipendentemente dal formato dei dati.

Nota

I dati vengono inviati tramite il corpo della richiesta.

  1. Importare un parser del corpo. Per convertire i dati in ingresso in un formato leggibile, importare la libreria body-parser installata con Express:

    let bodyParser = require('body-parser');
    
  2. Configurare il tipo di dati. Configurare Express in modo da analizzare i dati del corpo in ingresso nel formato previsto. Il codice seguente converte i dati in JSON:

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

I dati inviati dal client sono disponibili in req.body. È possibile leggere i dati e inserirli nel database.

Informazioni su come inserire un nuovo prodotto

Dopo aver configurato un'app per ricevere dati, si è pronti a creare il codice per inserire i dati. Ecco un esempio di codice che inserisce nuovi prodotti nell'archivio dati dell'applicazione 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);
});

Per inserire un nuovo prodotto, chiamare questa API con una richiesta POST per /products con un corpo JSON. Ad esempio:

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

Informazioni su come aggiornare l'intero prodotto

Oltre ad aggiungere di nuovi prodotti, Tailwind Traders deve poter sostituire i dati dei prodotti esistenti. Ecco un esempio di codice che gestisce PUT richieste:

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

Per aggiornare un prodotto, chiamare questa API con una richiesta PUT per /products/:id con un corpo JSON. Ad esempio:

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

Informazioni su come aggiornare parte di un prodotto

È anche necessario poter sostituire una parte dei dati di un prodotto anziché tutti. Ecco un esempio di codice, che gestisce PATCH richieste:

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

Per aggiornare una parte specifica di un prodotto, chiamare questa API con una richiesta PATCH per /products/:id con un corpo JSON. Ad esempio:

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