79 lines
1.7 KiB
JavaScript
79 lines
1.7 KiB
JavaScript
const express = require("express");
|
|
const bodyParser = require("body-parser");
|
|
|
|
const app = express();
|
|
const PORT = 8080;
|
|
|
|
// Middleware to parse JSON
|
|
app.use(bodyParser.json());
|
|
|
|
// In-memory data store
|
|
let items = [];
|
|
let currentId = 1;
|
|
|
|
// Routes
|
|
|
|
// CREATE - Add a new item
|
|
app.post("/items", (req, res) => {
|
|
const { name, description } = req.body;
|
|
|
|
if (!name) {
|
|
return res.status(400).json({ error: "Name is required" });
|
|
}
|
|
|
|
const newItem = { id: currentId++, name, description };
|
|
items.push(newItem);
|
|
res.status(201).json(newItem);
|
|
});
|
|
|
|
// READ - Get all items
|
|
app.get("/items", (req, res) => {
|
|
res.json(items);
|
|
});
|
|
|
|
// READ - Get item by ID
|
|
app.get("/items/:id", (req, res) => {
|
|
const { id } = req.params;
|
|
const item = items.find((i) => i.id === parseInt(id));
|
|
|
|
if (!item) {
|
|
return res.status(404).json({ error: "Item not found" });
|
|
}
|
|
|
|
res.json(item);
|
|
});
|
|
|
|
// UPDATE - Update item by ID
|
|
app.put("/items/:id", (req, res) => {
|
|
const { id } = req.params;
|
|
const { name, description } = req.body;
|
|
|
|
const item = items.find((i) => i.id === parseInt(id));
|
|
if (!item) {
|
|
return res.status(404).json({ error: "Item not found" });
|
|
}
|
|
|
|
if (name) item.name = name;
|
|
if (description) item.description = description;
|
|
|
|
res.json(item);
|
|
});
|
|
|
|
// DELETE - Remove item by ID
|
|
app.delete("/items/:id", (req, res) => {
|
|
const { id } = req.params;
|
|
const itemIndex = items.findIndex((i) => i.id === parseInt(id));
|
|
|
|
if (itemIndex === -1) {
|
|
return res.status(404).json({ error: "Item not found" });
|
|
}
|
|
|
|
items.splice(itemIndex, 1);
|
|
res.status(204).send();
|
|
});
|
|
|
|
// Start server
|
|
app.listen(PORT, () => {
|
|
console.log(`Server is running on http://localhost:${PORT}`);
|
|
});
|