JSON Data Serialization এবং API Response

KoaJS এবং RESTful API Development - কোআজেএস (KoaJS) - Web Development

234

KoaJS একটি লঘু এবং কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক যা Node.js প্ল্যাটফর্মে তৈরি। JSON Data Serialization এবং API Response হল ওয়েব অ্যাপ্লিকেশনের দুটি অত্যন্ত গুরুত্বপূর্ণ ফিচার, যা অ্যাপ্লিকেশনের ডেটাকে ফরম্যাট এবং রেসপন্সের জন্য প্রস্তুত করতে ব্যবহৃত হয়। KoaJS-এ JSON ডেটা তৈরি করা এবং API রেসপন্স পাঠানো সহজ এবং কার্যকরীভাবে করা যায়।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে KoaJS-এ JSON ডেটা সিরিয়ালাইজ করা যায় এবং API রেসপন্স দেওয়া যায়।


১. JSON Data Serialization

JSON Serialization হল একটি প্রক্রিয়া, যেখানে জাভাস্ক্রিপ্ট অবজেক্ট অথবা ডেটা স্ট্রাকচারকে JSON ফরম্যাটে রূপান্তরিত করা হয়, যাতে তা ওয়েব ব্রাউজার বা অন্যান্য সার্ভার অ্যাপ্লিকেশনে পাঠানো যায়।

১.১. JSON ডেটা তৈরি এবং সিরিয়ালাইজ করা

KoaJS-এ, আপনি সাধারণত ctx.body এ JSON ডেটা সেট করবেন, এবং KoaJS স্বয়ংক্রিয়ভাবে সেটিকে JSON ফরম্যাটে সিরিয়ালাইজ করবে।

const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();

router.get('/data', async (ctx) => {
  // JSON ডেটা তৈরি করা
  const data = {
    message: 'Hello, world!',
    status: 'success',
    timestamp: new Date().toISOString()
  };

  // ctx.body-এ JSON ডেটা সেট করা
  ctx.body = data;
});

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

ব্যাখ্যা:

  • ctx.body: KoaJS-এ JSON ডেটা রেসপন্স করতে ctx.body সেট করা হয়। KoaJS স্বয়ংক্রিয়ভাবে এটি JSON ফরম্যাটে রূপান্তরিত করে ক্লায়েন্টে পাঠাবে।

API রেসপন্স উদাহরণ:

{
  "message": "Hello, world!",
  "status": "success",
  "timestamp": "2024-12-23T12:00:00Z"
}

২. JSON Data Serialization with Custom Status Codes

JSON ডেটার সাথে কাস্টম HTTP স্ট্যাটাস কোডও পাঠানো যেতে পারে। উদাহরণস্বরূপ, একটি সফল রেসপন্সের জন্য 200 OK এবং একটি ত্রুটির জন্য 400 Bad Request ব্যবহার করা যেতে পারে।

২.১. কাস্টম স্ট্যাটাস কোড সহ JSON রেসপন্স

router.get('/success', async (ctx) => {
  const data = {
    message: 'Request successful!',
    status: 'success'
  };

  // কাস্টম স্ট্যাটাস কোড সহ JSON রেসপন্স
  ctx.status = 200;
  ctx.body = data;
});

router.get('/error', async (ctx) => {
  const error = {
    message: 'Bad request',
    status: 'error'
  };

  // কাস্টম স্ট্যাটাস কোড সহ ত্রুটি রেসপন্স
  ctx.status = 400;
  ctx.body = error;
});

ব্যাখ্যা:

  • ctx.status: এখানে কাস্টম HTTP স্ট্যাটাস কোড সেট করা হয়েছে।
  • 200 HTTP স্ট্যাটাস কোড সফল রেসপন্সের জন্য এবং 400 HTTP স্ট্যাটাস কোড ত্রুটির জন্য ব্যবহৃত হয়েছে।

সফল রেসপন্স:

{
  "message": "Request successful!",
  "status": "success"
}

ত্রুটি রেসপন্স:

{
  "message": "Bad request",
  "status": "error"
}

৩. JSON API Response with Headers

কখনও কখনও API রেসপন্সে হেডার অন্তর্ভুক্ত করা প্রয়োজন হতে পারে, যেমন Content-Type, Authorization, বা X-RateLimit। KoaJS-এ হেডার সেট করার জন্য ctx.set() ব্যবহার করা হয়।

৩.১. Headers সহ JSON Response

router.get('/response-with-headers', async (ctx) => {
  const data = {
    message: 'This is a JSON response with custom headers',
    status: 'success'
  };

  // কাস্টম হেডার সেট করা
  ctx.set('X-Custom-Header', 'MyHeaderValue');
  ctx.set('Content-Type', 'application/json');

  // JSON রেসপন্স পাঠানো
  ctx.body = data;
});

ব্যাখ্যা:

  • ctx.set(): কাস্টম হেডার সেট করার জন্য ব্যবহার করা হয়।
  • Content-Type: JSON ডেটা হিসেবে রেসপন্স পাঠানোর জন্য application/json সেট করা হয়েছে।
  • X-Custom-Header: এটি একটি কাস্টম হেডার, যা ক্লায়েন্টে পাঠানো হবে।

JSON রেসপন্স উদাহরণ:

{
  "message": "This is a JSON response with custom headers",
  "status": "success"
}

হেডার উদাহরণ:

X-Custom-Header: MyHeaderValue
Content-Type: application/json

৪. Error Handling and JSON Response

যখন ত্রুটি ঘটে, তখন কাস্টম JSON রেসপন্স এবং স্ট্যাটাস কোড পাঠানো দরকার। KoaJS-এ ত্রুটি হ্যান্ডলিং সাধারণত try-catch ব্লক বা error middleware ব্যবহার করে করা হয়।

৪.১. Error Handling with JSON Response

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = {
      message: err.message,
      status: 'error'
    };
    ctx.app.emit('error', err, ctx);
  }
});

router.get('/error', async (ctx) => {
  throw new Error('Something went wrong!');
});

ব্যাখ্যা:

  • try-catch: কোর মিডলওয়্যারটি ত্রুটির ক্ষেত্রে কাস্টম JSON রেসপন্স এবং স্ট্যাটাস কোড 500 সেট করে।
  • ctx.status: ত্রুটির জন্য স্ট্যাটাস কোড সেট করা হয়।
  • ctx.body: ত্রুটির বার্তা এবং স্ট্যাটাস পাঠানো হয়।

Error Response Example:

{
  "message": "Something went wrong!",
  "status": "error"
}

৫. JSON API Response with Pagination

যখন আপনার API একটি বড় ডেটাসেট রিটার্ন করে, তখন pagination এর মাধ্যমে ডেটা ভাগ করে পাঠানো প্রয়োজন হতে পারে। KoaJS-এ pagination API রেসপন্স কিভাবে দেওয়া হয় তা দেখব।

৫.১. Pagination সহ JSON API Response

router.get('/items', async (ctx) => {
  const page = parseInt(ctx.query.page) || 1;
  const limit = 10;
  const skip = (page - 1) * limit;

  // এখানে ধরে নিন, আমরা 100টি আইটেমের মধ্যে থেকে কিছু আইটেম রিটার্ন করছি
  const items = Array.from({ length: 100 }, (_, index) => `Item ${index + 1}`).slice(skip, skip + limit);

  ctx.body = {
    page,
    limit,
    totalItems: 100,
    items
  };
});

ব্যাখ্যা:

  • ctx.query.page: URL থেকে page প্যারামিটার নেওয়া হচ্ছে, যা পেজিনেশন কাজে আসে।
  • totalItems: মোট আইটেম সংখ্যা, যাতে ক্লায়েন্ট পেজিনেশন বুঝতে পারে।

Pagination Response Example:

{
  "page": 1,
  "limit": 10,
  "totalItems": 100,
  "items": [
    "Item 1",
    "Item 2",
    "Item 3",
    "Item 4",
    "Item 5",
    "Item 6",
    "Item 7",
    "Item 8",
    "Item 9",
    "Item 10"
  ]
}

সারাংশ

KoaJS-এ JSON Data Serialization এবং API Response পাঠানো অত্যন্ত সহজ এবং কার্যকর। আপনি JSON ডেটা সিরিয়ালাইজ করতে পারেন এবং ctx.body এর মাধ্যমে API রেসপন্স পাঠাতে পারেন। কাস্টম HTTP স্ট্যাটাস কোড, হেডার এবং ত্রুটি রেসপন্স সহ JSON রেসপন্স পাঠানো সম্ভব। Pagination সহ JSON API রেসপন্স কনফিগারেশন করে বড় ডেটাসেট খুব সহজে ভাগ করা যায়। KoaJS আপনাকে API রেসপন্স কাস্টমাইজ করার জন্য অনেক ফ্লেক্সিবিলিটি প্রদান করে, যাতে আপনি অ্যাপ্লিকেশনকে আরও কার্যকর এবং নিরাপদভাবে পরিচালনা করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...