KoaJS এর Context (ctx) এবং Request/Response Object

কোআজেএস (KoaJS) - Web Development

210

KoaJS একটি আধুনিক Node.js ওয়েব ফ্রেমওয়ার্ক যা অত্যন্ত লঘু এবং কাস্টমাইজযোগ্য। এর একটি মূল বৈশিষ্ট্য হলো Context (ctx) অবজেক্ট, যা রিকোয়েস্ট এবং রেসপন্সের মধ্যে সংযোগ স্থাপন করে। KoaJS-এ রিকোয়েস্ট এবং রেসপন্সের তথ্য ctx অবজেক্টের মাধ্যমে অ্যাক্সেস করা যায়। এটি কেবলমাত্র রিকোয়েস্ট এবং রেসপন্সের ডেটা ধারণ করে না, বরং আপনার অ্যাপ্লিকেশনে আরও অনেক কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়।


Context (ctx) কী?

KoaJS-এ Context (ctx) একটি অবজেক্ট যা রিকোয়েস্ট (request) এবং রেসপন্স (response) সম্পর্কিত সমস্ত তথ্য ধারণ করে। এটি কোড লেখার সময় ডেভেলপারদের জন্য সহজ এবং পরিষ্কার একটি ইন্টারফেস সরবরাহ করে। KoaJS রিকোয়েস্ট প্রক্রিয়া শুরু হলে একটি ctx অবজেক্ট তৈরি করা হয় এবং এটি সমস্ত মিডলওয়্যার এবং রাউটারের মাধ্যমে পাস করা হয়।

ctx এ দুটি মূল উপাদান থাকে:

  • ctx.request: রিকোয়েস্ট সম্পর্কিত তথ্য
  • ctx.response: রেসপন্স সম্পর্কিত তথ্য

ctx.request এবং ctx.response এর মধ্যে পার্থক্য

ctx.request: রিকোয়েস্ট সম্পর্কিত তথ্য

ctx.request অবজেক্টে রিকোয়েস্ট সম্পর্কিত সমস্ত তথ্য থাকে। এর মধ্যে কিছু গুরুত্বপূর্ণ প্রপার্টি রয়েছে:

  • ctx.request.path: রিকোয়েস্টের পাথ বা ইউআরএল (এটি URL এর রুট অংশ)।
  • ctx.request.method: রিকোয়েস্টের HTTP মেথড (যেমন: GET, POST, PUT, DELETE)।
  • ctx.request.query: URL থেকে পাওয়া কুয়েরি প্যারামিটার (যেমন: /path?name=John এর জন্য { name: 'John' })।
  • ctx.request.body: POST বা PUT রিকোয়েস্টের বডি ডেটা।
  • ctx.request.headers: রিকোয়েস্ট হেডার (যেমন: User-Agent, Content-Type ইত্যাদি)।
  • ctx.request.ip: ক্লায়েন্টের আইপি অ্যাড্রেস।

উদাহরণ:

app.use(async (ctx) => {
  console.log(ctx.request.path);  // ইউআরএল পাথ
  console.log(ctx.request.query); // কুয়েরি প্যারামিটার
  ctx.body = 'Hello, Koa!';
});

ctx.response: রেসপন্স সম্পর্কিত তথ্য

ctx.response অবজেক্টে রেসপন্স সম্পর্কিত তথ্য থাকে, যা ডেভেলপাররা রিকোয়েস্ট প্রক্রিয়া শেষে রিটার্ন করতে ব্যবহার করে। কিছু গুরুত্বপূর্ণ প্রপার্টি রয়েছে:

  • ctx.response.body: রেসপন্সের বডি ডেটা (যে ডেটা আপনি ক্লায়েন্টে পাঠাতে চান)।
  • ctx.response.status: রেসপন্স স্ট্যাটাস কোড (যেমন 200, 404, 500)।
  • ctx.response.headers: রেসপন্স হেডার (যেমন: Content-Type, Authorization ইত্যাদি)।
  • ctx.response.set(): কাস্টম রেসপন্স হেডার সেট করা।
  • ctx.response.append(): কাস্টম রেসপন্স হেডারের মান যোগ করা।

উদাহরণ:

app.use(async (ctx) => {
  ctx.response.status = 200;      // রেসপন্স স্ট্যাটাস কোড
  ctx.response.body = 'Success!'; // রেসপন্স বডি
});

Context (ctx) এর কিছু গুরুত্বপূর্ণ প্রপার্টি

KoaJS-এ ctx অবজেক্টে আরও কিছু গুরুত্বপূর্ণ প্রপার্টি থাকে যা ডেভেলপাররা রিকোয়েস্ট এবং রেসপন্স পরিচালনা করার জন্য ব্যবহার করতে পারেন:

  • ctx.state: এটি একটি খালি অবজেক্ট, যা ডেভেলপারদের দ্বারা শেয়ারড স্টেট ম্যানেজমেন্ট বা সেশন তথ্য সংরক্ষণের জন্য ব্যবহার করা হয়। এটি মূলত মিডলওয়্যারের মধ্যে বিভিন্ন ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।
  • ctx.cookies: কুকি হ্যান্ডলিং এর জন্য ব্যবহৃত হয়। ctx.cookies.set() এবং ctx.cookies.get() এর মাধ্যমে কুকি সেট এবং রিট্রিভ করা যায়।
app.use(async (ctx) => {
  ctx.cookies.set('user', 'john_doe', { httpOnly: true });
  ctx.body = 'Cookie has been set!';
});

KoaJS Request/Response Object এর উদাহরণ

এখানে একটি উদাহরণ দেওয়া হলো, যেখানে ctx.request এবং ctx.response ব্যবহার করা হয়েছে:

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx) => {
  // রিকোয়েস্ট তথ্য এক্সেস
  const path = ctx.request.path;
  const method = ctx.request.method;
  const query = ctx.request.query;

  // রেসপন্স সেট করা
  ctx.response.status = 200;
  ctx.response.body = {
    message: 'Request processed successfully!',
    path: path,
    method: method,
    query: query,
  };
});

app.listen(3000);
console.log('Server is running on http://localhost:3000');

এখানে, যখন ইউজার /path?name=John এ রিকোয়েস্ট করবে, KoaJS ctx.request.path, ctx.request.method, এবং ctx.request.query থেকে ডেটা এক্সেস করবে এবং রেসপন্সে তা পাঠাবে।


ctx (Context) এবং Middleware

KoaJS-এ ctx অবজেক্টটি মিডলওয়্যারগুলোর মধ্যে পাস হয়, এবং প্রতিটি মিডলওয়্যার তার উপর কাজ করতে পারে। async/await ব্যবহার করে আপনি মিডলওয়্যারের মধ্যে অ্যাসিনক্রোনাস কোড কার্যকর করতে পারবেন এবং রিকোয়েস্ট এবং রেসপন্স ডেটা সহজেই পরিচালনা করতে পারবেন।

const Koa = require('koa');
const app = new Koa();

// মিডলওয়্যার ১: রিকোয়েস্ট তথ্য লগ করা
app.use(async (ctx, next) => {
  console.log(`Path: ${ctx.request.path}, Method: ${ctx.request.method}`);
  await next();
});

// মিডলওয়্যার ২: রেসপন্স সেট করা
app.use(async (ctx) => {
  ctx.response.status = 200;
  ctx.response.body = 'Hello from Koa!';
});

app.listen(3000);
console.log('Server is running on http://localhost:3000');

এই উদাহরণে প্রথম মিডলওয়্যার রিকোয়েস্টের পাথ এবং মেথড লগ করবে, এবং দ্বিতীয় মিডলওয়্যার রেসপন্স বডি সেট করবে।


সারাংশ

KoaJS-এ ctx অবজেক্ট রিকোয়েস্ট এবং রেসপন্স সম্পর্কিত সমস্ত তথ্য ধারণ করে এবং এটি ডেভেলপারদের জন্য খুবই শক্তিশালী ও সহজ ইন্টারফেস প্রদান করে। ctx.request রিকোয়েস্ট সম্পর্কিত তথ্য ধারণ করে এবং ctx.response রেসপন্স সম্পর্কিত তথ্য ধারণ করে। এটি কেবল তথ্য সংরক্ষণই নয়, কাস্টম মিডলওয়্যার এবং বিভিন্ন প্রক্রিয়ায় সাহায্য করে অ্যাসিনক্রোনাস কাজ পরিচালনা করতে। KoaJS এর ctx অবজেক্ট ব্যবহারের মাধ্যমে কোড লেখার প্রক্রিয়া অনেক সহজ এবং কার্যকরী হয়ে ওঠে।

Content added By

KoaJS একটি মিনিমালিস্ট এবং কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক, যা Node.js-এ তৈরি। KoaJS-এ context object বা ctx একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান। এটি রিকোয়েস্ট এবং রেসপন্স সম্পর্কিত সমস্ত তথ্য ধারণ করে এবং অ্যাপ্লিকেশনের মধ্যে ডেটা আদান-প্রদানকে সহজ করে তোলে। ctx অবজেক্টের মাধ্যমে আপনি রিকোয়েস্টের তথ্য সংগ্রহ করতে পারেন এবং রেসপন্স সেট করতে পারেন। এটি KoaJS-এর মিডলওয়্যার সিস্টেমের কেন্দ্রবিন্দু, যা প্রতিটি রিকোয়েস্টের জন্য তৈরি হয় এবং পরবর্তী মিডলওয়্যারগুলোর মাধ্যমে ব্যবহার করা হয়।


Context Object (ctx) এর প্রধান ভূমিকা

১. রিকোয়েস্ট তথ্য ধারণ

ctx অবজেক্টে সমস্ত রিকোয়েস্ট সম্পর্কিত তথ্য থাকে, যেমন রিকোয়েস্ট পাথ, কুয়েরি প্যারামিটার, হেডার, কুকি, বডি ইত্যাদি। এর মাধ্যমে আপনি সহজেই রিকোয়েস্টের প্রয়োজনীয় তথ্য অ্যাক্সেস করতে পারবেন।

  • রিকোয়েস্ট পাথ: ctx.path
  • রিকোয়েস্ট মেথড (GET, POST, etc.): ctx.method
  • কুয়েরি প্যারামিটার: ctx.query
  • পথ প্যারামিটার: ctx.params
  • রিকোয়েস্ট বডি: ctx.request.body

উদাহরণ:

app.use(async (ctx, next) => {
  console.log(ctx.method);  // GET, POST, ইত্যাদি
  console.log(ctx.path);    // /home, /about, ইত্যাদি
  console.log(ctx.query);   // কুয়েরি প্যারামিটার
  await next();
});

২. রেসপন্স তথ্য ধারণ

ctx অবজেক্টের মাধ্যমে আপনি রেসপন্সের জন্য ডেটা সেট করতে পারেন। যেমন, আপনি রেসপন্সের বডি, হেডার, স্ট্যাটাস কোড ইত্যাদি কাস্টমাইজ করতে পারবেন।

  • রেসপন্স বডি: ctx.body
  • রেসপন্স স্ট্যাটাস কোড: ctx.status
  • রেসপন্স হেডার: ctx.set()

উদাহরণ:

app.use(async (ctx, next) => {
  ctx.status = 200;  // রেসপন্স স্ট্যাটাস কোড
  ctx.body = { message: "Success" };  // রেসপন্স বডি
  ctx.set('Content-Type', 'application/json');  // রেসপন্স হেডার
  await next();
});

৩. কুকি ব্যবস্থাপনা

ctx অবজেক্টের মাধ্যমে আপনি কুকি সেট এবং রিড করতে পারেন। এটি বিশেষভাবে সেশন বা ইউজার ট্র্যাকিংয়ের জন্য ব্যবহৃত হয়।

  • কুকি সেট করা: ctx.cookies.set()
  • কুকি রিড করা: ctx.cookies.get()

উদাহরণ:

app.use(async (ctx, next) => {
  ctx.cookies.set('user', 'john_doe');  // কুকি সেট করা
  const user = ctx.cookies.get('user');  // কুকি রিড করা
  console.log(user);  // john_doe
  await next();
});

৪. মিডলওয়্যার পারস্পরিক যোগাযোগ

KoaJS-এ, ctx অবজেক্টটি প্রতিটি মিডলওয়্যারে শেয়ার করা হয়। তাই, আপনি এক মিডলওয়্যার থেকে অন্য মিডলওয়্যারে ডেটা পাস করতে পারেন। এটি অ্যাপ্লিকেশনটির ফ্লো কন্ট্রোলকে সহজ এবং পরিষ্কার করে।

app.use(async (ctx, next) => {
  ctx.state.user = 'john_doe';  // মিডলওয়্যার থেকে ডেটা সেট করা
  await next();
});

app.use(async (ctx) => {
  console.log(ctx.state.user);  // মিডলওয়্যার থেকে ডেটা রিড করা
});

৫. রেসপন্স টাইম এবং লগিং

ctx অবজেক্ট ব্যবহার করে আপনি রেসপন্সের সময় ট্র্যাক করতে পারেন বা লগ করতে পারেন। এটি ডিবাগিং এবং পারফরম্যান্স মনিটরিংয়ের জন্য সহায়ক।

app.use(async (ctx, next) => {
  const start = Date.now();  // রেসপন্স শুরু হওয়ার সময়
  await next();
  const ms = Date.now() - start;  // রেসপন্সের সময়
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);  // লগিং
});

ctx এর অন্যান্য সুবিধা

  • স্বয়ংক্রিয় ত্রুটি পরিচালনা: ctx অবজেক্টে ত্রুটি ক্যাচ করা এবং তাকে রেসপন্স হিসেবে পাঠানো সহজ।

    app.use(async (ctx, next) => {
      try {
        await next();
      } catch (err) {
        ctx.status = 500;
        ctx.body = { error: 'Something went wrong!' };
      }
    });
    
  • অথেন্টিকেশন এবং অথরাইজেশন: ctx অবজেক্ট ব্যবহার করে ইউজারের অথেন্টিকেশন চেক করা এবং সেশন বা টোকেন যাচাই করা সম্ভব।

সারাংশ

KoaJS-এ context object বা ctx অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি রিকোয়েস্ট এবং রেসপন্স সম্পর্কিত সমস্ত তথ্য ধারণ করে এবং মিডলওয়্যার সিস্টেমের মধ্যে ডেটা আদান-প্রদান সহজ করে তোলে। ctx অবজেক্টের মাধ্যমে আপনি রিকোয়েস্টের তথ্য যেমন পাথ, কুয়েরি প্যারামিটার, রেসপন্সের বডি এবং হেডার, কুকি এবং আরও অনেক কিছু নিয়ন্ত্রণ করতে পারেন। এটি KoaJS অ্যাপ্লিকেশনের পারফরম্যান্স এবং কার্যকারিতা বৃদ্ধি করে, এবং কোডিংয়ের সময় ডেভেলপারদের আরও ফ্লেক্সিবিলিটি এবং নিয়ন্ত্রণ প্রদান করে।

Content added By

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

এখানে, আমরা দেখব কিভাবে KoaJS-এ Request এবং Response অবজেক্ট কনফিগার করা যায়, যেমন কাস্টম রিকোয়েস্ট হেডার সেট করা, কুয়েরি প্যারামিটার এবং বডি ডেটা এক্সেস করা, এবং রেসপন্সের হেডার, স্ট্যাটাস কোড এবং বডি কনফিগার করা।


Request Object কনফিগার করা

KoaJS-এ, ctx.request রিকোয়েস্ট সম্পর্কিত সমস্ত তথ্য ধারণ করে। আপনি রিকোয়েস্টের হেডার, পাথ, কুয়েরি প্যারামিটার, বডি, কুকি ইত্যাদি কনফিগার করতে পারেন। কিছু গুরুত্বপূর্ণ কনফিগারেশন নিচে দেওয়া হল:

১. রিকোয়েস্ট পাথ (Request Path) কনফিগার করা

ctx.request.path এর মাধ্যমে আপনি রিকোয়েস্টের URL পাথ অ্যাক্সেস করতে পারবেন।

app.use(async (ctx) => {
  console.log(`Requested Path: ${ctx.request.path}`);
  ctx.body = 'Path logged successfully';
});

২. রিকোয়েস্ট মেথড (Request Method) কনফিগার করা

ctx.request.method ব্যবহার করে আপনি রিকোয়েস্টের HTTP মেথড যেমন GET, POST, PUT, DELETE ইত্যাদি জানতে পারবেন।

app.use(async (ctx) => {
  console.log(`Requested Method: ${ctx.request.method}`);
  ctx.body = 'Method logged successfully';
});

৩. কুয়েরি প্যারামিটার (Query Parameters) এক্সেস করা

ctx.request.query এর মাধ্যমে আপনি URL এর কুয়েরি প্যারামিটারগুলি অ্যাক্সেস করতে পারেন। যেমন: /search?q=koa.

app.use(async (ctx) => {
  const query = ctx.request.query.q;
  console.log(`Search query: ${query}`);
  ctx.body = `Search query: ${query}`;
});

৪. রিকোয়েস্ট বডি (Request Body) এক্সেস করা

POST বা PUT রিকোয়েস্টের বডি ডেটা ctx.request.body এর মাধ্যমে অ্যাক্সেস করা যায়। koa-bodyparser মিডলওয়্যার ব্যবহার করে রিকোয়েস্ট বডি প্যার্স করতে হবে।

npm install koa-bodyparser
const bodyParser = require('koa-bodyparser');
app.use(bodyParser());

app.use(async (ctx) => {
  const { name, age } = ctx.request.body;
  console.log(`Name: ${name}, Age: ${age}`);
  ctx.body = `Name: ${name}, Age: ${age}`;
});

৫. রিকোয়েস্ট হেডার (Request Headers) এক্সেস করা

ctx.request.headers ব্যবহার করে আপনি রিকোয়েস্টের সমস্ত হেডার অ্যাক্সেস করতে পারেন।

app.use(async (ctx) => {
  console.log('Request Headers:', ctx.request.headers);
  ctx.body = 'Headers logged successfully';
});

Response Object কনফিগার করা

KoaJS-এ, ctx.response রেসপন্স সম্পর্কিত সমস্ত তথ্য ধারণ করে। আপনি রেসপন্সের হেডার, বডি, স্ট্যাটাস কোড এবং অন্যান্য কনফিগারেশন প্যারামিটার কনফিগার করতে পারেন। কিছু গুরুত্বপূর্ণ কনফিগারেশন নিচে দেওয়া হল:

১. রেসপন্স বডি (Response Body) কনফিগার করা

ctx.response.body এর মাধ্যমে আপনি রেসপন্সের বডি ডেটা সেট করতে পারেন।

app.use(async (ctx) => {
  ctx.response.body = 'Hello from Koa!';
});

২. রেসপন্স স্ট্যাটাস কোড (Response Status Code) কনফিগার করা

ctx.response.status এর মাধ্যমে আপনি রেসপন্সের HTTP স্ট্যাটাস কোড কনফিগার করতে পারেন, যেমন 200 (OK), 404 (Not Found), 500 (Internal Server Error) ইত্যাদি।

app.use(async (ctx) => {
  ctx.response.status = 404;  // Set status code to 404
  ctx.response.body = 'Page Not Found';
});

৩. রেসপন্স হেডার (Response Headers) কনফিগার করা

ctx.response.set() ব্যবহার করে আপনি কাস্টম রেসপন্স হেডার সেট করতে পারেন।

app.use(async (ctx) => {
  ctx.response.set('Content-Type', 'application/json');
  ctx.response.body = { message: 'Hello, Koa!' };
});

৪. রেসপন্স কুকি (Response Cookies) সেট করা

ctx.cookies.set() ব্যবহার করে আপনি কুকি সেট করতে পারেন।

app.use(async (ctx) => {
  ctx.cookies.set('user', 'john_doe', { httpOnly: true });
  ctx.response.body = 'Cookie has been set';
});

৫. কাস্টম হেডার অ্যাপেন্ড করা (Appending Headers)

ctx.response.append() ব্যবহার করে আপনি রেসপন্স হেডারের মধ্যে নতুন মান অ্যাপেন্ড করতে পারেন।

app.use(async (ctx) => {
  ctx.response.append('X-Custom-Header', 'CustomHeaderValue');
  ctx.response.body = 'Custom header appended';
});

Request এবং Response Object কনফিগার করার উদাহরণ

const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const app = new Koa();

app.use(bodyParser());

// Middleware to handle request and response configuration
app.use(async (ctx) => {
  // Request Configuration
  console.log(`Request Path: ${ctx.request.path}`);
  console.log(`Request Method: ${ctx.request.method}`);
  console.log(`Query Parameters:`, ctx.request.query);
  console.log(`Request Body:`, ctx.request.body);

  // Response Configuration
  ctx.response.status = 200; // Set Status Code
  ctx.response.set('Content-Type', 'application/json'); // Set custom headers
  ctx.response.body = { message: 'Request and Response successfully handled!' }; // Set Body
  
  // Set Cookie
  ctx.cookies.set('session_id', '12345', { httpOnly: true });
});

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

এখানে:

  1. Request Object থেকে পাথ, মেথড, কুয়েরি প্যারামিটার এবং বডি ডেটা অ্যাক্সেস করা হচ্ছে।
  2. Response Object এর স্ট্যাটাস কোড, কাস্টম হেডার, এবং বডি ডেটা কনফিগার করা হচ্ছে।

সারাংশ

KoaJS-এ Request এবং Response অবজেক্ট কনফিগার করার মাধ্যমে আপনি রিকোয়েস্ট এবং রেসপন্স সম্পর্কিত সমস্ত তথ্য নিয়ন্ত্রণ করতে পারবেন। ctx.request অবজেক্ট ব্যবহার করে আপনি রিকোয়েস্টের পাথ, মেথড, কুয়েরি প্যারামিটার, বডি এবং অন্যান্য তথ্য অ্যাক্সেস করতে পারেন, এবং ctx.response অবজেক্ট ব্যবহার করে আপনি রেসপন্সের স্ট্যাটাস কোড, বডি, হেডার এবং কুকি কনফিগার করতে পারেন। KoaJS এর এই কনফিগারেশন ক্ষমতা আপনাকে শক্তিশালী, কাস্টমাইজেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করবে।

Content added By

KoaJS একটি লঘু এবং শক্তিশালী ওয়েব ফ্রেমওয়ার্ক, যা Node.js প্ল্যাটফর্মে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। KoaJS-এর মাধ্যমে আপনি সহজেই HTTP রিকোয়েস্টের body, headers এবং query parameters অ্যাক্সেস করতে পারেন। KoaJS-এ রিকোয়েস্টের বিভিন্ন অংশের সাথে কাজ করার জন্য কিছু সাধারণ মিডলওয়্যার ব্যবহার করা হয়। এই টিউটোরিয়ালে, আমরা কিভাবে KoaJS-এ request body, headers এবং query parameters অ্যাক্সেস করা যায় তা আলোচনা করব।


Request Body অ্যাক্সেস করা

KoaJS-এ রিকোয়েস্টের body অ্যাক্সেস করতে koa-bodyparser মিডলওয়্যার ব্যবহার করা হয়। এটি JSON, URL-encoded এবং অন্যান্য ফরম্যাটে পাঠানো ডেটা পার্স করে Koa অ্যাপ্লিকেশনে সঠিকভাবে অ্যাক্সেস করার সুযোগ দেয়।

১. koa-bodyparser ইনস্টল করা

প্রথমে আপনাকে koa-bodyparser ইনস্টল করতে হবে:

npm install koa-bodyparser

২. koa-bodyparser ব্যবহার করা

এখন আপনি আপনার অ্যাপ্লিকেশনে koa-bodyparser মিডলওয়্যারটি ব্যবহার করতে পারেন এবং request body অ্যাক্সেস করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হল:

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

// koa-bodyparser মিডলওয়্যার ব্যবহার করা
app.use(bodyParser());

// POST রিকোয়েস্ট হ্যান্ডল করা
router.post('/submit', (ctx) => {
  const requestBody = ctx.request.body;  // request body অ্যাক্সেস করা
  ctx.body = {
    message: 'Data received successfully!',
    data: requestBody
  };
});

// রাউট মাউন্ট করা
app
  .use(router.routes())
  .use(router.allowedMethods());

// অ্যাপ চালু করা
app.listen(3000, () => {
  console.log('Koa app is running on http://localhost:3000');
});

এখানে /submit রুটে একটি POST রিকোয়েস্ট পাঠানো হলে, koa-bodyparser মিডলওয়্যার request body পার্স করে এবং তা ctx.request.body মাধ্যমে অ্যাক্সেস করা হয়।


Request Headers অ্যাক্সেস করা

KoaJS-এ রিকোয়েস্টের headers অ্যাক্সেস করা খুব সহজ। আপনি ctx.headers বা ctx.request.headers ব্যবহার করে headers অ্যাক্সেস করতে পারেন।

১. Request Headers অ্যাক্সেস করা

এখানে একটি উদাহরণ দেওয়া হল, যেখানে রিকোয়েস্ট হেডারে পাঠানো একটি কাস্টম header (x-custom-header) অ্যাক্সেস করা হচ্ছে:

router.get('/headers', (ctx) => {
  const customHeader = ctx.headers['x-custom-header'];  // headers থেকে কাস্টম header অ্যাক্সেস করা
  ctx.body = {
    message: 'Header received successfully!',
    customHeader: customHeader
  };
});

এই কোডের মাধ্যমে, যদি রিকোয়েস্টে x-custom-header নামে একটি header পাঠানো হয়, তাহলে সেটি ctx.headers দিয়ে অ্যাক্সেস করা যাবে।


Query Parameters অ্যাক্সেস করা

KoaJS-এ query parameters অ্যাক্সেস করতে ctx.query ব্যবহার করা হয়। এটি URL থেকে কুয়েরি প্যারামিটারকে সহজভাবে অ্যাক্সেস করতে সাহায্য করে।

১. Query Parameters অ্যাক্সেস করা

এখানে একটি উদাহরণ দেওয়া হল যেখানে URL এর কুয়েরি প্যারামিটার name অ্যাক্সেস করা হচ্ছে:

router.get('/search', (ctx) => {
  const queryParam = ctx.query.name;  // query parameters থেকে 'name' অ্যাক্সেস করা
  ctx.body = {
    message: 'Query parameter received successfully!',
    name: queryParam
  };
});

যদি আপনি http://localhost:3000/search?name=John রিকোয়েস্ট পাঠান, তাহলে ctx.query.name এর মাধ্যমে John মানটি অ্যাক্সেস করা যাবে।


পূর্ণ কোড উদাহরণ

একটি সম্পূর্ণ কোড উদাহরণ দেওয়া হল যা body, headers এবং query parameters একসাথে অ্যাক্সেস করে:

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

// koa-bodyparser মিডলওয়্যার ব্যবহার করা
app.use(bodyParser());

// POST রিকোয়েস্ট হ্যান্ডল করা (Request Body)
router.post('/submit', (ctx) => {
  const requestBody = ctx.request.body;  // request body অ্যাক্সেস করা
  ctx.body = {
    message: 'Data received successfully!',
    data: requestBody
  };
});

// GET রিকোয়েস্ট হ্যান্ডল করা (Headers)
router.get('/headers', (ctx) => {
  const customHeader = ctx.headers['x-custom-header'];  // headers থেকে কাস্টম header অ্যাক্সেস করা
  ctx.body = {
    message: 'Header received successfully!',
    customHeader: customHeader
  };
});

// GET রিকোয়েস্ট হ্যান্ডল করা (Query Parameters)
router.get('/search', (ctx) => {
  const queryParam = ctx.query.name;  // query parameters থেকে 'name' অ্যাক্সেস করা
  ctx.body = {
    message: 'Query parameter received successfully!',
    name: queryParam
  };
});

// রাউট মাউন্ট করা
app
  .use(router.routes())
  .use(router.allowedMethods());

// অ্যাপ চালু করা
app.listen(3000, () => {
  console.log('Koa app is running on http://localhost:3000');
});

এই কোডে:

  • /submit রুটে POST রিকোয়েস্টে body ডেটা পাঠানো হয় এবং তা ctx.request.body দিয়ে অ্যাক্সেস করা হয়।
  • /headers রুটে কাস্টম header (x-custom-header) পাঠানো হলে তা ctx.headers দিয়ে অ্যাক্সেস করা হয়।
  • /search রুটে কুয়েরি প্যারামিটার name পাঠানো হলে তা ctx.query.name দিয়ে অ্যাক্সেস করা হয়।

সারাংশ

KoaJS-এ request body, headers, এবং query parameters অ্যাক্সেস করা খুবই সহজ। koa-bodyparser মিডলওয়্যার ব্যবহার করে আপনি সহজে POST রিকোয়েস্টের body অ্যাক্সেস করতে পারেন, ctx.headers দিয়ে হেডারগুলোর তথ্য নিতে পারেন এবং ctx.query দিয়ে URL এর কুয়েরি প্যারামিটার অ্যাক্সেস করতে পারেন। KoaJS এই সবগুলো কাজ খুবই সহজ এবং পরিষ্কারভাবে করতে সাহায্য করে।

Content added By

KoaJS-এ HTTP রেসপন্সের status code এবং headers নির্ধারণ করা সহজ। KoaJS-এ, আপনি ctx.status ব্যবহার করে রেসপন্সের স্ট্যাটাস কোড সেট করতে পারেন এবং ctx.set() বা ctx.headers ব্যবহার করে হেডার সেট করতে পারেন। এই পদ্ধতিগুলো HTTP রেসপন্স কাস্টমাইজ করতে এবং সার্ভারের আচরণ নিয়ন্ত্রণ করতে সাহায্য করে।


Response Status কোড সেট করা

HTTP স্ট্যাটাস কোড রেসপন্সের গুরুত্বপূর্ন অংশ। এটি ক্লায়েন্টকে জানায় যে তাদের রিকোয়েস্ট সফল ছিল কিনা বা কোন ত্রুটি ঘটেছে। KoaJS-এ রেসপন্স স্ট্যাটাস কোড সেট করা খুবই সহজ। ctx.status এর মাধ্যমে আপনি এটি সেট করতে পারেন।

১. স্ট্যাটাস কোড সেট করা

কোনও রিকোয়েস্ট হ্যান্ডলারের মধ্যে, আপনি ctx.status দিয়ে রেসপন্স স্ট্যাটাস কোড নির্ধারণ করতে পারেন।

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx) => {
  ctx.status = 200;  // স্ট্যাটাস কোড 200, অর্থাৎ "OK"
  ctx.body = 'Hello, this is a successful response!';
});

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

এখানে, আমরা স্ট্যাটাস কোড হিসেবে 200 (OK) সেট করেছি, যা সফল রেসপন্স বোঝায়।

২. অন্য স্ট্যাটাস কোড ব্যবহার করা

কোনও রিকোয়েস্টে ত্রুটি হলে আপনি অন্য স্ট্যাটাস কোডও সেট করতে পারেন, যেমন 404 (Not Found) বা 500 (Internal Server Error)।

app.use(async (ctx) => {
  ctx.status = 404;  // স্ট্যাটাস কোড 404, অর্থাৎ "Not Found"
  ctx.body = 'Page not found!';
});

এটি একটি 404 ত্রুটি রেসপন্স দিবে যদি সেই পেজ না পাওয়া যায়।


Response Headers সেট করা

KoaJS-এ HTTP রেসপন্সের হেডার সেট করতে ctx.set() ব্যবহার করা হয়। আপনি এই মেথড দিয়ে একাধিক হেডার সেট করতে পারেন। ctx.set() ব্যবহার করে সাধারণভাবে স্ট্যাটাস কোড, কুকি, কনটেন্ট টাইপ ইত্যাদি হেডার যুক্ত করা যায়।

১. Header সেট করা

যেমন, আপনি Content-Type বা X-Powered-By হেডার সেট করতে পারেন:

app.use(async (ctx) => {
  ctx.status = 200;
  ctx.set('Content-Type', 'application/json');
  ctx.body = JSON.stringify({ message: 'Hello, Koa!' });
});

এখানে, Content-Type হেডার application/json সেট করা হয়েছে, যা ক্লায়েন্টকে জানাবে যে রেসপন্স JSON ফরম্যাটে রয়েছে।

২. একাধিক Header সেট করা

আপনি একাধিক হেডারও সেট করতে পারেন। উদাহরণস্বরূপ:

app.use(async (ctx) => {
  ctx.status = 200;
  ctx.set('Content-Type', 'application/json');
  ctx.set('X-Powered-By', 'KoaJS');
  ctx.set('Cache-Control', 'no-cache');
  ctx.body = JSON.stringify({ message: 'Headers Set Successfully!' });
});

এখানে তিনটি হেডার সেট করা হয়েছে:

  1. Content-Type: রেসপন্সের কনটেন্ট টাইপ নির্ধারণ করছে।
  2. X-Powered-By: সার্ভারের তথ্য প্রদান করছে (এখানে KoaJS ব্যবহার করা হয়েছে)।
  3. Cache-Control: কনটেন্ট ক্যাশিং নিয়ন্ত্রণ করছে, যাতে এটি ক্যাশ না হয়।

৩. কুকি সেট করা

KoaJS-এ কুকি সেট করতে ctx.cookies.set() ব্যবহার করা হয়।

app.use(async (ctx) => {
  ctx.status = 200;
  ctx.cookies.set('username', 'john_doe', {
    httpOnly: true, // শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য
    secure: false,  // HTTPS ব্যবহৃত না হলে এটি true হতে পারে না
  });
  ctx.body = 'Cookie has been set';
});

এখানে, কুকি username সেট করা হচ্ছে। কুকিটি শুধুমাত্র HTTP রিকোয়েস্টে অ্যাক্সেসযোগ্য হবে (সিকিউর কুকি) এবং এটি নিরাপদ নয় (কেবল HTTP প্রটোকলের মাধ্যমে সেট করা যাবে, HTTPS প্রোটোকলে).


সারাংশ

KoaJS-এ HTTP রেসপন্সের status code এবং headers সেট করা অত্যন্ত সহজ। ctx.status দিয়ে আপনি স্ট্যাটাস কোড নির্ধারণ করতে পারেন, এবং ctx.set() দিয়ে বিভিন্ন হেডার যেমন Content-Type, Cache-Control, বা X-Powered-By সেট করতে পারেন। কুকি সেট করতে ctx.cookies.set() ব্যবহার করা হয়। এই উপায়গুলোর মাধ্যমে আপনি আপনার রেসপন্সের কনফিগারেশন সম্পূর্ণভাবে নিয়ন্ত্রণ করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...