একটি রুট একটি HTTP মেথড আর একটি URL প্যাটার্নকে একটি রিকোয়েস্ট উভয়ের সাথে মিললে চালানোর জন্য একটি ফাংশনের সাথে জোড়া দেয়। এই পাঠটি আগের পাঠের সাধারণ app.get() কলের বাইরের অংশগুলো কভার করে।
প্রতিটি HTTP verb-এর জন্য Express-এর একটি মিলে যাওয়া মেথড আছে:
app.get('/products', (req, res) => { /* পণ্য fetch করুন আর তালিকা করুন */ })
app.post('/products', (req, res) => { /* একটি নতুন পণ্য তৈরি করুন */ })
app.put('/products/:id', (req, res) => { /* একটি পণ্য সম্পূর্ণ প্রতিস্থাপন করুন */ })
app.delete('/products/:id', (req, res) => { /* একটি পণ্য মুছুন */ })| মেথড | প্রথাগতভাবে যার জন্য ব্যবহৃত |
|---|---|
| GET | ডেটা পড়া — সার্ভারে কখনো কিছু বদলানো উচিত নয় |
| POST | নতুন কিছু তৈরি করা |
| PUT | একটি বিদ্যমান আইটেম সম্পূর্ণ প্রতিস্থাপন করা |
| DELETE | কিছু সরিয়ে ফেলা |
একটি রুট পাথে একটি কোলন URL-এর একটি অংশকে একটি নামযুক্ত মান হিসেবে ক্যাপচার করে:
app.get('/products/:id', (req, res) => {
res.send(`Product ID: ${req.params.id}`)
})
// GET /products/42 → req.params.id হলো '42'একটি রুট একাধিক ক্যাপচার করতে পারে:
app.get('/users/:userId/orders/:orderId', (req, res) => {
res.send(`User ${req.params.userId}, order ${req.params.orderId}`)
})একটি URL-এ ?-এর পরে সবকিছু — /search?q=laptop&sort=price — স্বয়ংক্রিয়ভাবে req.query-তে পার্স হয়:
app.get('/search', (req, res) => {
res.send(`Searching for: ${req.query.q}, sorted by: ${req.query.sort}`)
})Param বনাম কোয়েরি স্ট্রিং
রুট প্যারামিটার (/products/:id) একটি নির্দিষ্ট রিসোর্স শনাক্ত করে — রুটটি একেবারেই অর্থপূর্ণ হতে সাধারণত প্রয়োজনীয়। কোয়েরি স্ট্রিং (?sort=price) ঐচ্ছিক পরিবর্তক — ফিল্টার, সর্টিং, পেজিনেশন — যা ফলাফল কীভাবে ফিরে আসে তা বদলায়।
রুট মুষ্টিমেয় সংখ্যা ছাড়িয়ে বাড়লে, express.Router() সেগুলোকে একটিতে জমা হওয়ার বদলে নিজস্ব ফাইলে থাকতে দেয়:
// routes/products.js
const express = require('express')
const router = express.Router()
router.get('/', (req, res) => { res.send('All products') })
router.get('/:id', (req, res) => { res.send(`Product ${req.params.id}`) })
module.exports = router
// app.js
const productsRouter = require('./routes/products')
app.use('/products', productsRouter)routes/products.js-এর ভেতরের প্রতিটি পাথ এটি যেখানে মাউন্ট করা হয়েছে সেই প্রিফিক্সের সাপেক্ষে — এখানে router.get('/:id') আসলে /products/:id-এর সাথে মেলে।