Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Express Documentation22টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Routing
  • Middleware
  • Request & Response
  • Static Files
  • Router
  • Error Handling
  • Template Engines
  • Body Parsing
  • File Upload
  • CORS
  • Database
  • Validation
  • Authentication
  • Security
  • REST API
  • Performance
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. Express
  3. RESTful API Design with Express
ExpressAdvanced

RESTful API Design with Express

REST principles, best practices, pagination, filtering, responses — Express API বাংলায়।

12টি অংশবাংলা ভাষায়

REST API মানে HTTP via resources represent করা। Express-এ সঠিকভাবে API design করা শিখে নিন।

REST Principles

  • Resources noun-এ নাম দিন — /users, /posts (verb নয়)
  • HTTP methods দিয়ে operation বোঝান — GET/POST/PUT/DELETE
  • Nested resources — /users/:id/posts
  • Status codes সঠিকভাবে ব্যবহার করুন
  • Versioning — /api/v1/users

Pagination

router.get("/", async (req, res, next) => {
  const page = parseInt(req.query.page) || 1;
  const limit = parseInt(req.query.limit) || 10;
  const skip = (page - 1) * limit;

  const [total, users] = await Promise.all([
    User.countDocuments(),
    User.find().skip(skip).limit(limit),
  ]);

  res.json({
    data: users,
    pagination: {
      page,
      limit,
      total,
      totalPages: Math.ceil(total / limit),
      hasNext: page * limit < total,
    },
  });
});

Filtering & Sorting

// GET /api/products?category=books&minPrice=100&sort=-price
router.get("/", async (req, res, next) => {
  const { category, minPrice, maxPrice, sort } = req.query;

  const query = {};

  if (category) query.category = category;
  if (minPrice || maxPrice) {
    query.price = {};
    if (minPrice) query.price.$gte = Number(minPrice);
    if (maxPrice) query.price.$lte = Number(maxPrice);
  }

  const sortObj = {};
  if (sort) {
    sort.split(",").forEach(field => {
      const key = field.startsWith("-") ? field.slice(1) : field;
      sortObj[key] = field.startsWith("-") ? -1 : 1;
    });
  }

  const products = await Product.find(query).sort(sortObj);
  res.json({ count: products.length, products });
});

Consistent Response Format

// success response
const sendSuccess = (res, data, status = 200) => {
  res.status(status).json({ success: true, data });
};

const sendError = (res, message, status = 400, details) => {
  res.status(status).json({
    success: false,
    message,
    ...(details && { details }),
  });
};

router.get("/:id", async (req, res, next) => {
  const user = await User.findById(req.params.id);
  if (!user) return sendError(res, "User পাওয়া যায়নি", 404);
  sendSuccess(res, user);
});

Versioning

// Version 1
app.use("/api/v1/users", userRoutesV1);

// Version 2 (বদল হলে)
app.use("/api/v2/users", userRoutesV2);

// কিংবা route handler-এ
const apiV1 = express.Router();
const apiV2 = express.Router();

apiV1.get("/users", handlerV1);
apiV2.get("/users", handlerV2);

app.use("/v1", apiV1);
app.use("/v2", apiV2);
API Tools

API test-এর জন্য Postman বা Bruno ব্যবহার করুন। Documentation-এর জন্য Swagger / OpenAPI।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরExpress Security Best PracticesপরেরExpress Performance Optimization
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com