BanglaTech

© 2026 Bangla Technologies. সর্বস্বত্ব সংরক্ষিত.

একটিNerddevs Ltd-এর প্রোডাক্ট
হোমঅনুসন্ধানআমাদের সম্পর্কেটিউটোরিয়ালশিক্ষকদের জন্যকোচিং সেন্টারের জন্যগোপনীয়তা নীতিসেবার শর্তাবলি

NestJS you can have multiple controller classes using the same @Controller('/v1/users') path

M
Md Delwar Hossain
March 10, 2026 · 231 views
~1 মিনিট পড়তে
16px

NestJS you can absolutely have multiple controller classes using the same @Controller('/v1/users') path. NestJS will simply merge the routes defined in those controllers.

This is actually a good practice for large modules, because it helps split logic into smaller, more maintainable files.


Example

Controller 1 – users.controller.ts

import { Controller, Get } from '@nestjs/common';

@Controller('/v1/users')
export class UsersController {
  
  @Get()
  getAllUsers() {
    return 'Get all users';
  }

}

Controller 2 – user-profile.controller.ts

import { Controller, Get, Param } from '@nestjs/common';

@Controller('/v1/users')
export class UserProfileController {

  @Get(':id/profile')
  getUserProfile(@Param('id') id: string) {
    return `Profile of user ${id}`;
  }

}

Module

Both controllers must be registered in the same module.

@Module({
  controllers: [UsersController, UserProfileController],
})
export class UsersModule {}

Resulting Routes

HTTPRouteControllerGET/v1/usersUsersControllerGET/v1/users/:id/profileUserProfileController

NestJS internally builds the routing table and combines them automatically.


When this is useful

For example in a large API like yours (TestReach style APIs), you might split controllers like:

users.controller.ts

users-auth.controller.ts

users-admin.controller.ts

users-settings.controller.ts

All can share:

@Controller('/v1/users')


One Important Rule ⚠️

You must avoid duplicate routes.

Bad example:

@Controller('/v1/users')
export class AController {
  @Get()
}

@Controller('/v1/users')
export class BController {
  @Get()
}

Both map to:

GET /v1/users

Then NestJS will throw a route conflict / override issue.


A Very Clean Pattern (Recommended)

Instead of repeating /v1/users everywhere:

@Controller('users')

and in main.ts

app.setGlobalPrefix('v1');

Then all routes become automatically:

/v1/users

আরও দেখুন

🏆
কুইজ প্রতিযোগিতায় অংশ নিন
ফ্রি অনলাইন কুইজ, জিতুন পুরস্কার।
✏️
নিজে কুইজ তৈরি করুন
শিক্ষক ও টিউটরদের জন্য ফ্রি টুলস।
✨
BanglaTech সম্পর্কে
আমাদের গল্প ও মিশন।

Comments (0)

Login to leave a comment.