feat: day 29

This commit is contained in:
Philippe Torrel
2026-07-23 14:00:55 +02:00
parent ad296423bc
commit 702443e90e
18 changed files with 1248 additions and 11 deletions

View File

@@ -22,6 +22,7 @@ products.load();
// Middleware
app.use(cors(corsOptions)); // Fängt alle HTTP-Requests vor den Routenabfragen ab.
app.use(express.json()); // HTTP-Request Body wird als JSON Objekt erwartet und geparsed wird.
// Routes
app.get('/', (req, res) => {
@@ -43,11 +44,78 @@ app.get('/persons', (req, res) => {
res.send(persons);
});
// REST API ======
// Representational State Transfer (abgekürzt REST)
// GET - Daten Holen
// POST - Daten hinzufügen
// PUT/PATCH - Daten aktualisieren / Einen Datensatz aktualisieren
// DELETE - Daten löschen
// HTTP - Methode - POST
// (C)RUD - create - neues Produkt erstellen
// BRE(A)D - add
app.post('/api/products', (req, res) => {
const product = req.body;
if (!products.add(product)) {
return res.status(400).send({ msg: 'Could not add product', status: 400, success: false });
}
res.send({ msg: 'Product added', status: 200, success: true, data: product });
});
// HTTP - Methode - GET
// C(R)UD - read
// (B)READ - browse
app.get('/api/products', (req, res) => {
const data = products.getAll();
res.send(data);
});
// HTTP - Methode - GET
// C(R)UD - read
// B(R)EAD - read
app.get('/api/products/:id', (req, res) => {
const id = req.params.id; // routenparameter :id wird als Eigenschaft in params-Objekt abgelegt
const product = products.get(id);
if (!product) {
return res.status(400).send({ msg: 'Could not get product', status: 400, success: false });
}
res.send(product);
});
// HTTP - Methode - PUT/PATCH
// CR(U)D - update
// BR(E)AD - edit
app.put('/api/products', (req, res) => {
const product = req.body;
const updated = products.update(product);
if (!updated) {
return res.status(400).send({ msg: 'Could not update product', status: 400, success: false });
}
res.send({ msg: 'Product updated', status: 200, success: true, data: product });
});
// HTTP - Methode - DELETE
// CRU(D) - delete
// BREA(D) - delete
app.delete('/api/products/:id', (req, res) => {
const id = req.params.id;
if (!products.delete(id)) {
return res.status(400).send({ msg: 'Could not delete product', status: 400, success: false });
}
res.send({ msg: 'Product deleted', status: 200, success: true, data: id });
});
// =========
app.listen(PORT, HOST, () => {
console.log(color.magenta(`🚀 Server is running at: ${BASE_URL}`));
console.log(color.yellow('CTRL + C to close.'));