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