আপনি frontend-এ fetch লিখে data এনেছেন অনেকবার। কখনো data এসেছে { data: [...] } হয়ে, কখনো শুধু [...] হয়ে, আবার কখনো error এলে পুরো response-টাই অন্যরকম। তখন frontend-এ প্রতিটা endpoint-এর জন্য আলাদা করে ভাবতে হয়েছে - এই ঝামেলাটা আসলে backend-এর তৈরি। Backend-এর কাজ হলো data-টা এমনভাবে সাজিয়ে দেওয়া, যাতে frontend-এর লোক বুঝতে পারে কী পেল, কী ভুল হলো, আর পরের page-এর data আছে কিনা।
REST-এর মূল নিয়ম খুব সহজ। প্রতিটা জিনিস একটা resource - যেমন users, orders, products। আর কাজ বোঝাতে HTTP method ব্যবহার হয়: GET মানে আনা, POST মানে নতুন বানানো, PUT বা PATCH মানে আপডেট করা, DELETE মানে মুছে দেওয়া। URL-এ verb থাকবে না। /getUsers বা /deleteOrder লিখবেন না, কারণ method-ই বলে দিচ্ছে কাজটা কী।
// ভুল - URL-এ কাজের নাম
GET /getUsers
POST /createUser
DELETE /deleteUser/5
// ঠিক - resource + method
GET /users
POST /users
DELETE /users/5Response format সব জায়গায় এক রাখুন
দ্বিতীয় গুরুত্বপূর্ণ নিয়ম: প্রতিটা response-এর গঠন একই রকম হবে। এক জায়গায় data, আরেক জায়গায় result, আরেক জায়গায় হঠাৎ payload - এমন হলে frontend টিমের জীবন কঠিন হয়ে যায়, আর interview-তেও এই শৃঙ্খলাটাই দেখা হয়।
app.get("/users", (req, res) => {
res.json({
success: true,
data: users,
message: "Users fetched",
});
});এখানে status code-ও সমান গুরুত্বপূর্ণ। 200 মানে ঠিক আছে, 201 মানে নতুন কিছু বানানো হয়েছে, 400 মানে client-এর request-এ ভুল আছে, 401 মানে login করা নেই, 404 মানে পাওয়া যায়নি, 500 মানে server-এর নিজের ভুল। Frontend অনেক সিদ্ধান্তই status code দেখে নেয় - তাই এটা শুধু সৌন্দর্য না, এটা একটা signal।
Pagination, filtering, sorting - শুরুতেই ভাবুন
User list-এ যদি ১০ হাজার user থাকে, সবাইকে একসাথে পাঠানো যাবে না। তাই list endpoint-এ ?page=2&limit=20 ধরনের pagination রাখা হয়, সাথে দরকার হলে ?search= বা ?sort=-createdAt। এই সিদ্ধান্তগুলো Day 1-এ নেওয়া সহজ, পরে যোগ করা কঠিন - কারণ frontend ততদিনে পুরনো format-এ অভ্যস্ত হয়ে যায়।
সবাই যে ভুলটা করে
সবচেয়ে সাধারণ ভুল: সব error-এ 200 status পাঠিয়ে ভেতরে success: false লিখে দেওয়া। এতে frontend-এর error handling ভেঙে যায়, monitoring tool কিছুই ধরতে পারে না। Status code-ই প্রথম signal - ভুল হলে ভুল status-ই পাঠান।
আজকের Practice
একটা নতুন folder-এ TypeScript + Express project setup করুন। ৩টা endpoint বানান - GET /users, GET /users/:id, POST /users। সব response-এ একই format রাখুন (success, data, message), সঠিক status code দিন, আর list-এ page ও limit দিয়ে pagination যোগ করুন।
Interview-এ কীভাবে বলবেন
REST মানে resource-based design - URL-এ resource থাকে, method দিয়ে কাজ বোঝানো হয়। আমি সব response-এ একই format রাখি আর সঠিক status code ব্যবহার করি, যাতে frontend অনুমান না করে signal দেখে সিদ্ধান্ত নিতে পারে।