Lecture-2: NestJS Controller

কন্ট্রোলার হল নেস্টজেএস এর একটি কোর কম্পোনেন্ট, যা অ্যাপ্লিকেশন এর ইনকামিং রিকোয়েস্ট গুলোকে হ্যান্ডল করে। কন্ট্রোলার এর মূল কাজ হল রিকোয়েস্ট এর উপর ভিত্তি করে উপযুক্ত রেসপন্স রিটার্ন করা। কন্ট্রোলার এর মাধ্যমে আমরা রাউটিং, প্যারামিটার, কুয়েরি, বডি, হেডার, কুকি, ভ্যালিডেশন, অথেন্টিকেশন, অথরাইজেশন, এবং অন্যান্য ফিচার গুলো ব্যবহার করতে পারি।

কন্ট্রোলার তৈরি করার জন্য আমরা একটি ক্লাস ব্যবহার করি, যা একটি ডেকোরেটর দ্বারা সজ্জিত হয়। ডেকোরেটর হল একটি ফাংশন, যা ক্লাস, মেথড, প্রোপার্টি, অথবা প্যারামিটার এর উপর মেটাডাটা যোগ করে। নেস্টজেএস এ কন্ট্রোলার এর জন্য আমরা @Controller() ডেকোরেটর ব্যবহার করি, যা ক্লাসকে একটি কন্ট্রোলার হিসেবে নির্ধারণ করে। এই ডেকোরেটর এর মধ্যে আমরা একটি প্রিফিক্স পাথ দিতে পারি, যা কন্ট্রোলার এর সব রাউট এর জন্য প্রযোজ্য হবে। যেমন, আমরা যদি @Controller(‘users’) ব্যবহার করি, তবে কন্ট্রোলার এর সব রাউট এর prefix হবে /users।

কন্ট্রোলার এর মধ্যে আমরা এক বা একাধিক মেথড ব্যবহার করি, যা রিকোয়েস্ট গুলোকে হ্যান্ডল করে। এই মেথড গুলোকে এন্ডপয়েন্ট বলা হয়। এন্ডপয়েন্ট গুলোকেও ডেকোরেটর দ্বারা সজ্জিত করা হয়, যা রিকোয়েস্ট এর প্রকার এবং পাথ নির্ধারণ করে। যেমন, আমরা যদি @Get(‘profile’) ডেকোরেটর ব্যবহার করি, তবে এটি একটি গেট রিকোয়েস্ট এর জন্য /users/profile পাথ এর এন্ডপয়েন্ট হিসেবে কাজ করবে। এন্ডপয়েন্ট গুলো একটি রেসপন্স রিটার্ন করে, যা রিকোয়েস্ট এর ডাটা, স্ট্যাটাস কোড, হেডার, কুকি ইত্যাদি থাকতে পারে।

import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './create-user.dto';

@Controller('users')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get()
  findAll(): User[] {
    return this.userService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string): User {
    return this.userService.findOne(id);
  }

  @Post()
  create(@Body() createUserDto: CreateUserDto): User {
    return this.userService.create(createUserDto);
  }
}
  • @Request(), @Req() – আমরা Request object এর data access করতে পারবো @Req() ওর @Request() ডেকোরেটর দিয়ে।
  • @Response(), @Res()* – @Res() / @Response() ডেকোরেটর বেবহার করা হয় custom response generate করার জন্য।
  • @Session() – @Session() ডেকোরেটর request থেকে session object data নেয়ার জন্য ব্যবহার করা হয়।
  • @Param(key?: string) – এই ডেকোরেটর ব্যবহার করা হয় URL থেকে data নেয়ার জন্য।
  • @Body(key?: string) – Request body থেকে data নেয়ার জন্য এই ডেকোরেটর ব্যবহার করা হয়।
  • @Query(key?: string)
  • @Headers(name?: string) – Header data access এর জন্য এই ডেকোরেটর ব্যবহার করা হয়।
  • @Ip() – User এর IP এর জন্য এই ডেকোরেটর ব্যবহার করা হয়।
  • @HostParam() – Host parameters এর data এর জন্য এই ডেকোরেটর ব্যবহার করা হয়।

Reference:
  • https://expressjs.com/en/api.html#req

Leave a Reply