Schreiben von Daten

Abgeschlossen

Bisher haben Sie Routen zum Lesen von Daten für die Tailwind Traders-Produkt-API entwickelt. Sie müssen jedoch auch Produkte hinzufügen.

In dieser Lerneinheit besprechen wir die verschiedenen Methoden, die wir verwenden können, um Produkte hinzuzufügen oder zu aktualisieren, und zeigen Beispiele, wie dieser Code implementiert wird. In der nächsten Lerneinheit werden Sie den Code Ihrer Anwendung bearbeiten, um neue Produkte hinzuzufügen und bestehende zu aktualisieren.

Grundlegendes zum Schreiben von Daten in die API

Um Daten zu schreiben, verwenden Sie eine HTTP-Methode, um anzugeben, ob es sich um neue Daten oder eine Aktualisierung bestehender Daten handelt.

Übliche HTTP-Methoden sind:

Methode Beschreibung
POST Eine neue Ressource erstellen
PUT Aktualisieren einer vorhandenen Ressource
PATCH Aktualisieren eines Teils einer vorhandenen Ressource

PUT und PATCH sind ähnlich. Der Unterschied besteht darin, dass PUT die gesamte Ressource ersetzt. PATCH ersetzt nur die Eigenschaften, die in der Anforderung angegeben werden.

Grundlegendes zur Konfiguration Ihrer App für den Datenempfang

Um Daten in Ihrer Webanwendung zu empfangen, konfigurieren Sie Express auf der Grundlage des Formats der eingehenden Daten, z. B. HTML- oder JSON-Format. Das Konvertieren und Konfigurieren von Daten sind häufig verwendete Schritte, unabhängig vom Datenformat.

Hinweis

Daten werden über den Text der Anforderung gesendet.

  1. Importieren Sie einen Textparser. Um die eingehenden Daten in ein lesbares Format zu konvertieren, importieren Sie die body-parser-Bibliothek, die mit Express installiert wurde:

    let bodyParser = require('body-parser');
    
  2. Konfigurieren Sie den Datentyp. Konfigurieren Sie Express so, dass die eingehenden Textdaten im vorgesehenen Format analysiert werden. Der folgende Code konvertiert die Daten in das JSON-Format:

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

Die vom Client gesendeten Daten sind über req.body verfügbar. Sie können die Daten lesen und in die Datenbank einfügen.

Grundlegendes zum Einfügen eines neuen Produkts

Nachdem Sie eine App zum Empfangen von Daten konfiguriert haben, können Sie Code zum Einfügen von Daten erstellen. Nachfolgend finden Sie ein Codebeispiel, mit dem Sie neue Produkte in den Anwendungsdatenspeicher von Tailwind Trader einfügen:

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

Rufen Sie diese API mit einer POST-Anforderung mit einem JSON-Text an /products auf, um ein neues Produkt einzufügen. Zum Beispiel:

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

Grundlegendes zum Aktualisieren eines gesamten Produkts

Neben dem Hinzufügen neuer Produkte benötigt Tailwind Traders die Möglichkeit, vorhandene Produktdaten zu ersetzen. Hier ist ein Codebeispiel, das PUT-Anforderungen verarbeitet:

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

Rufen Sie diese API mit einer PUT-Anforderung mit einem JSON-Text an /products/:id auf, um ein Produkt zu aktualisieren. Zum Beispiel:

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

Grundlegendes zum Aktualisieren eines Teils eines Produkts

Sie benötigen auch die Möglichkeit, einen Teil der Daten eines Produkts zu ersetzen, anstatt alle. Hier ist ein Codebeispiel, das PATCH-Anforderungen verarbeitet:

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

Um einen bestimmten Teil eines Produkts zu aktualisieren, rufen Sie diese API mit einer PATCH-Anforderung mit einem JSON-Text an /products/:id auf. Zum Beispiel:

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