test 03
This commit is contained in:
parent
3c0306d590
commit
19fd92dffa
52
index.js
52
index.js
|
|
@ -43,6 +43,35 @@ app.get("/items/:id", (req, res) => {
|
||||||
res.json(item);
|
res.json(item);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// READ - Get items by ID and filter by query parameters
|
||||||
|
app.get("/items/:id/search", (req, res) => {
|
||||||
|
const { id } = req.params; // Path parameter
|
||||||
|
const { name, description } = req.query; // Query parameters
|
||||||
|
|
||||||
|
// Find the item by ID
|
||||||
|
const item = items.find((i) => i.id === parseInt(id));
|
||||||
|
if (!item) {
|
||||||
|
return res.status(404).json({ error: "Item not found" });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply query parameter filters
|
||||||
|
let filteredDetails = { ...item };
|
||||||
|
|
||||||
|
// Filter item fields based on query parameters
|
||||||
|
if (name && !item.name.toLowerCase().includes(name.toLowerCase())) {
|
||||||
|
return res.status(404).json({ error: "Item name does not match query" });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
description &&
|
||||||
|
(!item.description || !item.description.toLowerCase().includes(description.toLowerCase()))
|
||||||
|
) {
|
||||||
|
return res.status(404).json({ error: "Item description does not match query" });
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(filteredDetails);
|
||||||
|
});
|
||||||
|
|
||||||
// UPDATE - Update item by ID
|
// UPDATE - Update item by ID
|
||||||
app.put("/items/:id", (req, res) => {
|
app.put("/items/:id", (req, res) => {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
|
|
@ -72,6 +101,29 @@ app.delete("/items/:id", (req, res) => {
|
||||||
res.status(204).send();
|
res.status(204).send();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// READ - Get items with optional query parameters
|
||||||
|
app.get("/items/search", (req, res) => {
|
||||||
|
const { name, description } = req.query;
|
||||||
|
|
||||||
|
// Filter items based on query parameters
|
||||||
|
let filteredItems = items;
|
||||||
|
|
||||||
|
if (name) {
|
||||||
|
filteredItems = filteredItems.filter((item) =>
|
||||||
|
item.name.toLowerCase().includes(name.toLowerCase())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (description) {
|
||||||
|
filteredItems = filteredItems.filter((item) =>
|
||||||
|
item.description &&
|
||||||
|
item.description.toLowerCase().includes(description.toLowerCase())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(filteredItems);
|
||||||
|
});
|
||||||
|
|
||||||
// Start server
|
// Start server
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
console.log(`Server is running on http://localhost:${PORT}`);
|
console.log(`Server is running on http://localhost:${PORT}`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user