Can define behavior after recieving requests at a given route Route With Different Request Methods import express from 'express' const router = express.router() router.route("/") .get( (req, res) => res.send("hello world")) .post(UpdateDB) Route With URL Parameters import express from 'express' const router = express.router() router.route("/:id") Specific Requests Post // add a product router.post('/', async (req, res) =>{ try { const product = await Product.create(req.body); console.log(req.body) res.status(200).json(product); } catch (error) { res.status(500).json({message : error.message}); } }); Get //get all products router.get('/', async (req, res) => { try { const products = await Product.find({}); res.status(200).json(products); } catch (error){ res.status(500).json({message : error.message}); } Put router.put('/:id', async (req, res) => { try { const { id } = req.params; const product = await Product.findByIdAndUpdate(id, req.body); if (!product){ res.status(404).json({message : "product not found"}); return } const updatedProduct = await Product.findById(id); res.status(200).json(updatedProduct) } catch (error) { res.status(500).json({message : error.message}) } } ) Delete // delete a product router.delete('/:id', async (req, res) => { try { const {id} = req.params; const product = await Product.findByIdAndDelete(id); if (!product){ res.status(404).json({message : "product not found"}); return } res.status(200).json(product); } catch (error) { res.status(500).json({message : error.message}) } } )